aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--manifest.json13
-rw-r--r--plugins/language_awk.lua110
2 files changed, 122 insertions, 1 deletions
diff --git a/manifest.json b/manifest.json
index fb9e543..68a69ee 100644
--- a/manifest.json
+++ b/manifest.json
@@ -64,6 +64,7 @@
"language_assembly_riscv": {},
"language_assembly_x86": {},
"language_autohotkey_v1": {},
+ "language_awk": {},
"language_batch": {},
"language_bazel": {},
"language_bend": {},
@@ -166,7 +167,7 @@
"id": "meta_languages",
"mod_version": "3",
"type": "meta",
- "version": "0.1.16"
+ "version": "0.1.17"
},
{
"description": "Align multiple carets and selections *([clip](https://user-images.githubusercontent.com/2798487/165631951-532f8d24-d596-4dd0-9d21-ff53c71ed32f.mp4))*",
@@ -671,6 +672,16 @@
"version": "0.1"
},
{
+ "description": "Syntax for the [Awk](https://en.wikipedia.org/wiki/AWK)(v1) programming language",
+ "id": "language_awk",
+ "mod_version": "3",
+ "path": "plugins/language_awk.lua",
+ "tags": [
+ "language"
+ ],
+ "version": "0.1"
+ },
+ {
"description": "Syntax for Windows [Batch Files](https://en.wikipedia.org/wiki/Batch_file)",
"id": "language_batch",
"mod_version": "3",
diff --git a/plugins/language_awk.lua b/plugins/language_awk.lua
new file mode 100644
index 0000000..cc56335
--- /dev/null
+++ b/plugins/language_awk.lua
@@ -0,0 +1,110 @@
+-- mod-version:3
+local syntax = require "core.syntax"
+
+syntax.add {
+ name = "Awk script",
+ files = "%.awk$",
+ headers = "^#!.*bin.*awk",
+ comment = "#",
+ patterns = {
+ -- $# is a awk special variable and the '#' shouldn't be interpreted
+ -- as a comment.
+ { pattern = "%$[%a_@*#][%w_]*", type = "keyword2" },
+ -- Comments
+ { pattern = "#.*", type = "comment" },
+ -- Strings
+ { pattern = { '"', '"', '\\' }, type = "string" },
+ { pattern = { "'", "'", '\\' }, type = "string" },
+ { pattern = { '`', '`', '\\' }, type = "string" },
+ -- Ignore numbers that start with dots or slashes
+ { pattern = "%f[%w_%.%/]%d[%d%.]*%f[^%w_%.]", type = "number" },
+ -- Operators
+ { pattern = "[!<>|&%[%]:=*]", type = "operator" },
+ -- Match parameters
+ { pattern = "%f[%S][%+%-][%w%-_:]+", type = "function" },
+ { pattern = "%f[%S][%+%-][%w%-_]+%f[=]", type = "function" },
+ -- Prevent parameters with assignments from been matched as variables
+ {
+ pattern = "%s%-%a[%w_%-]*()%s+()%d[%d%.]+",
+ type = { "function", "normal", "number" }
+ },
+ {
+ pattern = "%s%-%a[%w_%-]*()%s+()%a[%a%-_:=]+",
+ type = { "function", "normal", "symbol" }
+ },
+ -- Match variable assignments
+ { pattern = "[_%a][%w_]+%f[%+=]", type = "keyword2" },
+ -- Match variable expansions
+ { pattern = "%${.-}", type = "keyword2" },
+ { pattern = "%$[%d%$%a_@*][%w_]*", type = "keyword2" },
+ -- Functions
+ { pattern = "[%a_%-][%w_%-]*()%s*%f[(]", type = { "function", "normal" } },
+ -- Everything else
+ { pattern = "[%a_][%w_]*", type = "symbol" },
+ },
+ symbols = {
+ ["break"] = "keyword",
+ ["continue"] = "keyword",
+ ["do"] = "keyword",
+ ["delete"] = "keyword",
+ ["else"] = "keyword",
+ ["exit"] = "keyword",
+ ["for"] = "keyword",
+ ["function"] = "keyword",
+ ["getline"] = "keyword",
+ ["if"] = "keyword",
+ ["next"] = "keyword",
+ ["nextfile"] = "keyword",
+ ["print"] = "keyword",
+ ["printf"] = "keyword",
+ ["return"] = "keyword",
+ ["while"] = "keyword",
+ ["gsub"] = "keyword",
+ ["index"] = "keyword",
+ ["length"] = "keyword",
+ ["match"] = "keyword",
+ ["split"] = "keyword",
+ ["sprintf"] = "keyword",
+ ["sub"] = "keyword",
+ ["substr"] = "keyword",
+ ["tolower"] = "keyword",
+ ["toupper"] = "keyword",
+ ["atan2"] = "keyword",
+ ["cos"] = "keyword",
+ ["exp"] = "keyword",
+ ["int"] = "keyword",
+ ["log"] = "keyword",
+ ["rand"] = "keyword",
+ ["sin"] = "keyword",
+ ["sqrt"] = "keyword",
+ ["srand"] = "keyword",
+ ["BEGIN"] = "keyword",
+ ["END"] = "keyword",
+ ["ARGC"] = "keyword",
+ ["ARGV"] = "keyword",
+ ["FILENAME"] = "keyword",
+ ["FNR"] = "keyword",
+ ["FS"] = "keyword",
+ ["NF"] = "keyword",
+ ["NR"] = "keyword",
+ ["OFMT"] = "keyword",
+ ["OFS"] = "keyword",
+ ["ORS"] = "keyword",
+ ["RLENGTH"] = "keyword",
+ ["RS"] = "keyword",
+ ["RSTART"] = "keyword",
+ ["SUBSEP"] = "keyword",
+ ["ARGIND"] = "keyword",
+ ["BINMODE"] = "keyword",
+ ["CONVFMT"] = "keyword",
+ ["ENVIRON"] = "keyword",
+ ["ERRNO"] = "keyword",
+ ["FIELDWIDTHS"] = "keyword",
+ ["IGNORECASE"] = "keyword",
+ ["LINT"] = "keyword",
+ ["PROCINFO"] = "keyword",
+ ["RT"] = "keyword",
+ ["RLENGTH"] = "keyword",
+ ["TEXTDOMAIN"] = "keyword"
+ }
+}