From 571529568cd649a4eec6cfaaaa5f33b6c421fe65 Mon Sep 17 00:00:00 2001 From: Jesse Portnoy Date: Sun, 16 Jul 2023 23:44:37 +0100 Subject: [PATCH] - Revised code example - Added new lexers and revised existing --- examples/syncat.go | 1 + ftdetect.go | 6 +++--- syntax_files/apacheconf.yaml | 2 +- syntax_files/c.yaml | 2 ++ syntax_files/diff.yaml | 12 ++++++++++++ syntax_files/dpkg.yaml | 18 ++++++++++++++++++ syntax_files/php.yaml | 3 ++- syntax_files/pkg-config.yaml | 1 + syntax_files/server-log.yaml | 15 +++++++++++++++ 9 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 syntax_files/diff.yaml create mode 100644 syntax_files/dpkg.yaml create mode 100644 syntax_files/server-log.yaml diff --git a/examples/syncat.go b/examples/syncat.go index 47f1e50..c076dc9 100644 --- a/examples/syncat.go +++ b/examples/syncat.go @@ -27,6 +27,7 @@ func main() { syn_dir = gopath + "/src/github.com/jessp01/highlight/syntax_files" } + syn_dir = os.Getenv("SYNDIR") var defs []*highlight.Def err := highlight.ParseSyntaxFiles (syn_dir, &defs) if err != nil { diff --git a/ftdetect.go b/ftdetect.go index e04130f..80ad807 100644 --- a/ftdetect.go +++ b/ftdetect.go @@ -9,9 +9,9 @@ func DetectFiletype(defs []*Def, filename string, firstLine []byte) *Def { return d } if len(d.ftdetect) > 1 { - if d.ftdetect[1].MatchString(string(firstLine)) { - return d - } + if d.ftdetect[1].MatchString(string(firstLine)) { + return d + } } } diff --git a/syntax_files/apacheconf.yaml b/syntax_files/apacheconf.yaml index a6f8914..fe5b9a4 100644 --- a/syntax_files/apacheconf.yaml +++ b/syntax_files/apacheconf.yaml @@ -1,7 +1,7 @@ filetype: apacheconf detect: - filename: "httpd\\.conf|mime\\.types|vhosts\\.d\\\\*|\\.htaccess" + filename: "httpd\\.conf|apache.*\\.conf|mime\\.types|vhosts\\.d\\\\*|\\.htaccess" rules: - identifier: "(AcceptMutex|AcceptPathInfo|AccessFileName|Action|AddAlt|AddAltByEncoding|AddAltByType|AddCharset|AddDefaultCharset|AddDescription|AddEncoding)" diff --git a/syntax_files/c.yaml b/syntax_files/c.yaml index 44debd1..2c3bb90 100644 --- a/syntax_files/c.yaml +++ b/syntax_files/c.yaml @@ -2,9 +2,11 @@ filetype: c detect: filename: "(\\.(c|C)$|\\.(h|H)$|\\.ii?$|\\.(def)$)" + header: "^[[:space:]]*#[[:space:]]*(define|pragma|include|(un|ifn?)def|endif|el(if|se)|if|warning|error)" rules: - identifier: "\\b[A-Z_][0-9A-Z_]+\\b" + - statement: "([a-zA-Z][a-zA-Z0-9_]*)[[:space:]]*\\(" - type: "\\b(float|double|char|int|short|long|sizeof|enum|void|static|const|struct|union|typedef|extern|(un)?signed|inline)\\b" - type: "\\b((s?size)|((u_?)?int(8|16|32|64|ptr)))_t\\b" - type.extended: "\\b(bool)\\b" diff --git a/syntax_files/diff.yaml b/syntax_files/diff.yaml new file mode 100644 index 0000000..9c286f5 --- /dev/null +++ b/syntax_files/diff.yaml @@ -0,0 +1,12 @@ +filetype: diff + +detect: + filename: "\\.diff$" + header: "^((---.*)|(\\+\\+\\+.*))" + +rules: + - statement: "(^\\+\\+\\+.*)" + - statement: "(^---.*)" + - type: "(^@@.*)" + - constant.number: "(^\\+.*)" + - preproc: "(^-.*)" diff --git a/syntax_files/dpkg.yaml b/syntax_files/dpkg.yaml new file mode 100644 index 0000000..9b58808 --- /dev/null +++ b/syntax_files/dpkg.yaml @@ -0,0 +1,18 @@ +filetype: dpkg + +detect: + filename: "\\.dpkg$" + header: "(^[D|+].*)" + +rules: + - constant.number: "(^[D|+].*)" + - preproc: "[0-9]+,?[0-9]*" + - preproc: "\\\\." + - preproc: "^(un.*)" + - constant: "^(ii.*)" + - comment: "^(rc.*)" + - type: "(i386|i486|i586|i686|amd64|\\|athlon|ia64|alpha|alphaev5|alphaev56|alphapca56|alphaev6|alphaev67|sparc|sparcv9|sparc64armv3l|armv4b|armv4lm|ips|mipsel|ppc|iseries|ppcpseries|ppc64|m68k|m68kmint|Sgi|rs6000|i370|s390x|s390|noarch)" + - comment: "(^|[[:space:]])#([^{].*)?$" + - preproc: "[[:space:]]+$" + - indent-char: " + +| + +" + - statement: "[[:space:]]([0-9~:.]{2,}[-+:.0-9a-z~]+)[[:space:]]" diff --git a/syntax_files/php.yaml b/syntax_files/php.yaml index bd0c539..4b850d6 100644 --- a/syntax_files/php.yaml +++ b/syntax_files/php.yaml @@ -1,7 +1,8 @@ filetype: php detect: - filename: "\\.php[2345s~]?$" + filename: "\\.php[2345s~]|\\.inc[2345s~]$" + header: "^(<\\?php)" rules: - symbol.operator: "<|>" diff --git a/syntax_files/pkg-config.yaml b/syntax_files/pkg-config.yaml index 3a7651e..c7d98cb 100644 --- a/syntax_files/pkg-config.yaml +++ b/syntax_files/pkg-config.yaml @@ -2,6 +2,7 @@ filetype: pc detect: filename: "\\.pc$" + header: "^(prefix|exec_prefix|libdir|includedir)=" rules: - preproc: "^(Name|Description|URL|Version|Conflicts|Cflags):" diff --git a/syntax_files/server-log.yaml b/syntax_files/server-log.yaml new file mode 100644 index 0000000..44136be --- /dev/null +++ b/syntax_files/server-log.yaml @@ -0,0 +1,15 @@ +filetype: serverlog + +detect: + filename: "httpd.*\\.log||vhosts\\\\.*\\.log|apache.*\\.log|nginx.*\\.log" + +rules: + - constant.number: "(\\[[^]]+\\])" + - preproc: "([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3})" + - preproc: "\\\\." + - preproc: "(\\[(error|warning|info|warn)\\])" + - constant.specialChar: "((GET|POST|HEAD)\\ [^\\ ]+)" + - comment: "(referer\\: .*)" + - statement: "[[:space:]]([0-9~:.]{2,}[-+:.0-9a-z~]+)[[:space:]]" + - type: "(Mozilla|Chrome|Safari|AppleWebKit|Linux x86_64|Gecko|Windows|Mac)" +