diff --git a/CHANGELOG.rst b/CHANGELOG.rst index a91cee9..dad0b86 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -15,6 +15,8 @@ Unreleased Added ===== +- Awk support + - Recipes section in the manual - Django HTML support (preliminary, will only pass through injected languages) diff --git a/queries/awk/rainbow-delimiters.scm b/queries/awk/rainbow-delimiters.scm new file mode 100644 index 0000000..795360a --- /dev/null +++ b/queries/awk/rainbow-delimiters.scm @@ -0,0 +1,48 @@ +(block + "{" @delimiter + "}" @delimiter @sentinel) @container + +(grouping + "(" @delimiter + ")" @delimiter @sentinel) @container + +(array_ref + "[" @delimiter + "]" @delimiter @sentinel) @container + +(func_call + "(" @delimiter + ")" @delimiter @sentinel) @container + +(if_statement + "if" + "(" @delimiter + ")" @delimiter @sentinel) @container + +(while_statement + "while" + "(" @delimiter + ")" @delimiter @sentinel) @container + +;; This messes up the highlighting of the sibling block +; (do_while_statement +; "(" @delimiter +; ")" @delimiter @sentinel) @container + +(for_statement + "for" + "(" @delimiter + ")" @delimiter @sentinel) @container + +(for_in_statement + "for" + "(" @delimiter + ")" @delimiter @sentinel) @container + +(switch_statement + "switch" + "(" @delimiter + ")" @delimiter + (switch_body + "{" @delimiter + "}" @delimiter @sentinel)) @container diff --git a/test/highlight/samples/awk/regular.awk b/test/highlight/samples/awk/regular.awk new file mode 100644 index 0000000..9821763 --- /dev/null +++ b/test/highlight/samples/awk/regular.awk @@ -0,0 +1,39 @@ +BEGIN { + print "Hello world" +} + +/(foo | (bar | baz))/ { + print "One of foo, bar or baz" + print (1 + (2 + (3 + 4))) + print foo[bar[baz[herp[derp]]]] + print foo(bar(baz(herp(derp)))) + if (false) { + if (false) { + if (false) { + print "This never happens" + } + } + } + + while (false) { + do { + for (i = 1; i < 5; i++) { + print "This never happens" + } + for (var in array) { + print "This never happens" + } + } while (false) + } + + switch (expr) { + case 1: + print "One" + break + case 2: + print "Two" + break + default: + print "Something else" + } +} diff --git a/test/highlight/spec/awk/rainbow-delimiters/regular.awk.lua b/test/highlight/spec/awk/rainbow-delimiters/regular.awk.lua new file mode 100644 index 0000000..8745244 --- /dev/null +++ b/test/highlight/spec/awk/rainbow-delimiters/regular.awk.lua @@ -0,0 +1,340 @@ +return { + awk = { { + end_col = 7, + end_row = 7, + hl_group = "RainbowDelimiterRed", + start_col = 6, + start_row = 0 + }, { + end_col = 1, + end_row = 1, + hl_group = "RainbowDelimiterRed", + start_col = 0, + start_row = 2 + }, { + end_col = 23, + end_row = 23, + hl_group = "RainbowDelimiterRed", + start_col = 22, + start_row = 4 + }, { + end_col = 8, + end_row = 8, + hl_group = "RainbowDelimiterYellow", + start_col = 7, + start_row = 6 + }, { + end_col = 13, + end_row = 13, + hl_group = "RainbowDelimiterBlue", + start_col = 12, + start_row = 6 + }, { + end_col = 18, + end_row = 18, + hl_group = "RainbowDelimiterOrange", + start_col = 17, + start_row = 6 + }, { + end_col = 24, + end_row = 24, + hl_group = "RainbowDelimiterOrange", + start_col = 23, + start_row = 6 + }, { + end_col = 25, + end_row = 25, + hl_group = "RainbowDelimiterBlue", + start_col = 24, + start_row = 6 + }, { + end_col = 26, + end_row = 26, + hl_group = "RainbowDelimiterYellow", + start_col = 25, + start_row = 6 + }, { + end_col = 11, + end_row = 11, + hl_group = "RainbowDelimiterYellow", + start_col = 10, + start_row = 7 + }, { + end_col = 15, + end_row = 15, + hl_group = "RainbowDelimiterBlue", + start_col = 14, + start_row = 7 + }, { + end_col = 19, + end_row = 19, + hl_group = "RainbowDelimiterOrange", + start_col = 18, + start_row = 7 + }, { + end_col = 24, + end_row = 24, + hl_group = "RainbowDelimiterGreen", + start_col = 23, + start_row = 7 + }, { + end_col = 29, + end_row = 29, + hl_group = "RainbowDelimiterGreen", + start_col = 28, + start_row = 7 + }, { + end_col = 30, + end_row = 30, + hl_group = "RainbowDelimiterOrange", + start_col = 29, + start_row = 7 + }, { + end_col = 31, + end_row = 31, + hl_group = "RainbowDelimiterBlue", + start_col = 30, + start_row = 7 + }, { + end_col = 32, + end_row = 32, + hl_group = "RainbowDelimiterYellow", + start_col = 31, + start_row = 7 + }, { + end_col = 11, + end_row = 11, + hl_group = "RainbowDelimiterYellow", + start_col = 10, + start_row = 8 + }, { + end_col = 15, + end_row = 15, + hl_group = "RainbowDelimiterBlue", + start_col = 14, + start_row = 8 + }, { + end_col = 19, + end_row = 19, + hl_group = "RainbowDelimiterOrange", + start_col = 18, + start_row = 8 + }, { + end_col = 24, + end_row = 24, + hl_group = "RainbowDelimiterGreen", + start_col = 23, + start_row = 8 + }, { + end_col = 29, + end_row = 29, + hl_group = "RainbowDelimiterGreen", + start_col = 28, + start_row = 8 + }, { + end_col = 30, + end_row = 30, + hl_group = "RainbowDelimiterOrange", + start_col = 29, + start_row = 8 + }, { + end_col = 31, + end_row = 31, + hl_group = "RainbowDelimiterBlue", + start_col = 30, + start_row = 8 + }, { + end_col = 32, + end_row = 32, + hl_group = "RainbowDelimiterYellow", + start_col = 31, + start_row = 8 + }, { + end_col = 5, + end_row = 5, + hl_group = "RainbowDelimiterYellow", + start_col = 4, + start_row = 9 + }, { + end_col = 11, + end_row = 11, + hl_group = "RainbowDelimiterYellow", + start_col = 10, + start_row = 9 + }, { + end_col = 13, + end_row = 13, + hl_group = "RainbowDelimiterYellow", + start_col = 12, + start_row = 9 + }, { + end_col = 6, + end_row = 6, + hl_group = "RainbowDelimiterBlue", + start_col = 5, + start_row = 10 + }, { + end_col = 12, + end_row = 12, + hl_group = "RainbowDelimiterBlue", + start_col = 11, + start_row = 10 + }, { + end_col = 14, + end_row = 14, + hl_group = "RainbowDelimiterBlue", + start_col = 13, + start_row = 10 + }, { + end_col = 7, + end_row = 7, + hl_group = "RainbowDelimiterOrange", + start_col = 6, + start_row = 11 + }, { + end_col = 13, + end_row = 13, + hl_group = "RainbowDelimiterOrange", + start_col = 12, + start_row = 11 + }, { + end_col = 15, + end_row = 15, + hl_group = "RainbowDelimiterOrange", + start_col = 14, + start_row = 11 + }, { + end_col = 4, + end_row = 4, + hl_group = "RainbowDelimiterOrange", + start_col = 3, + start_row = 13 + }, { + end_col = 3, + end_row = 3, + hl_group = "RainbowDelimiterBlue", + start_col = 2, + start_row = 14 + }, { + end_col = 2, + end_row = 2, + hl_group = "RainbowDelimiterYellow", + start_col = 1, + start_row = 15 + }, { + end_col = 8, + end_row = 8, + hl_group = "RainbowDelimiterYellow", + start_col = 7, + start_row = 17 + }, { + end_col = 14, + end_row = 14, + hl_group = "RainbowDelimiterYellow", + start_col = 13, + start_row = 17 + }, { + end_col = 16, + end_row = 16, + hl_group = "RainbowDelimiterYellow", + start_col = 15, + start_row = 17 + }, { + end_col = 6, + end_row = 6, + hl_group = "RainbowDelimiterBlue", + start_col = 5, + start_row = 18 + }, { + end_col = 8, + end_row = 8, + hl_group = "RainbowDelimiterOrange", + start_col = 7, + start_row = 19 + }, { + end_col = 26, + end_row = 26, + hl_group = "RainbowDelimiterOrange", + start_col = 25, + start_row = 19 + }, { + end_col = 28, + end_row = 28, + hl_group = "RainbowDelimiterOrange", + start_col = 27, + start_row = 19 + }, { + end_col = 4, + end_row = 4, + hl_group = "RainbowDelimiterOrange", + start_col = 3, + start_row = 21 + }, { + end_col = 8, + end_row = 8, + hl_group = "RainbowDelimiterOrange", + start_col = 7, + start_row = 22 + }, { + end_col = 21, + end_row = 21, + hl_group = "RainbowDelimiterOrange", + start_col = 20, + start_row = 22 + }, { + end_col = 23, + end_row = 23, + hl_group = "RainbowDelimiterOrange", + start_col = 22, + start_row = 22 + }, { + end_col = 4, + end_row = 4, + hl_group = "RainbowDelimiterOrange", + start_col = 3, + start_row = 24 + }, { + end_col = 3, + end_row = 3, + hl_group = "RainbowDelimiterBlue", + start_col = 2, + start_row = 25 + }, { + end_col = 2, + end_row = 2, + hl_group = "RainbowDelimiterYellow", + start_col = 1, + start_row = 26 + }, { + end_col = 9, + end_row = 9, + hl_group = "RainbowDelimiterYellow", + start_col = 8, + start_row = 28 + }, { + end_col = 14, + end_row = 14, + hl_group = "RainbowDelimiterYellow", + start_col = 13, + start_row = 28 + }, { + end_col = 16, + end_row = 16, + hl_group = "RainbowDelimiterYellow", + start_col = 15, + start_row = 28 + }, { + end_col = 2, + end_row = 2, + hl_group = "RainbowDelimiterYellow", + start_col = 1, + start_row = 37 + }, { + end_col = 1, + end_row = 1, + hl_group = "RainbowDelimiterRed", + start_col = 0, + start_row = 38 + } }, + regex = {} +} \ No newline at end of file