diff options
| author | Amaan Qureshi <amaanq12@gmail.com> | 2023-03-06 04:46:43 -0500 |
|---|---|---|
| committer | Amaan Qureshi <amaanq12@gmail.com> | 2023-03-07 23:45:54 -0500 |
| commit | 71be7c04d5f55e931b4503a58464dae6519de29f (patch) | |
| tree | 7386a9cd6ed866b6d69ff1cfa8dad32304063bc4 | |
| parent | feat: add Uxn Tal (diff) | |
| download | nvim-treesitter-71be7c04d5f55e931b4503a58464dae6519de29f.tar nvim-treesitter-71be7c04d5f55e931b4503a58464dae6519de29f.tar.gz nvim-treesitter-71be7c04d5f55e931b4503a58464dae6519de29f.tar.bz2 nvim-treesitter-71be7c04d5f55e931b4503a58464dae6519de29f.tar.lz nvim-treesitter-71be7c04d5f55e931b4503a58464dae6519de29f.tar.xz nvim-treesitter-71be7c04d5f55e931b4503a58464dae6519de29f.tar.zst nvim-treesitter-71be7c04d5f55e931b4503a58464dae6519de29f.zip | |
feat: add Squirrel
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | lockfile.json | 3 | ||||
| -rw-r--r-- | lua/nvim-treesitter/parsers.lua | 8 | ||||
| -rw-r--r-- | queries/squirrel/folds.scm | 27 | ||||
| -rw-r--r-- | queries/squirrel/highlights.scm | 307 | ||||
| -rw-r--r-- | queries/squirrel/indents.scm | 58 | ||||
| -rw-r--r-- | queries/squirrel/injections.scm | 9 | ||||
| -rw-r--r-- | queries/squirrel/locals.scm | 67 |
8 files changed, 480 insertions, 0 deletions
@@ -314,6 +314,7 @@ We are looking for maintainers to add more parsers and to write query files for - [x] [solidity](https://github.com/JoranHonig/tree-sitter-solidity) (maintained by @amaanq) - [x] [sparql](https://github.com/BonaBeavis/tree-sitter-sparql) (maintained by @BonaBeavis) - [x] [sql](https://github.com/derekstride/tree-sitter-sql) (maintained by @derekstride) +- [x] [squirrel](https://github.com/amaanq/tree-sitter-squirrel) (maintained by @amaanq) - [x] [starlark](https://github.com/amaanq/tree-sitter-starlark) (maintained by @amaanq) - [x] [supercollider](https://github.com/madskjeldgaard/tree-sitter-supercollider) (maintained by @madskjeldgaard) - [x] [surface](https://github.com/connorlay/tree-sitter-surface) (maintained by @connorlay) diff --git a/lockfile.json b/lockfile.json index 2deb48d6b..cbe57a265 100644 --- a/lockfile.json +++ b/lockfile.json @@ -422,6 +422,9 @@ "sql": { "revision": "1cb7c7a11015983f6d173847d5a3574f8e20107b" }, + "squirrel": { + "revision": "518ab2feba8e14147009e788530b8ac88dfa9e73" + }, "starlark": { "revision": "8ad93a74c2a880bc16325affba3cc66c14bb2bde" }, diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index a2fbe23d8..42b495a1d 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -1329,6 +1329,14 @@ list.sql = { maintainers = { "@derekstride" }, } +list.squirrel = { + install_info = { + url = "https://github.com/amaanq/tree-sitter-squirrel", + files = { "src/parser.c", "src/scanner.c" }, + }, + maintainers = { "@amaanq" }, +} + list.starlark = { install_info = { url = "https://github.com/amaanq/tree-sitter-starlark", diff --git a/queries/squirrel/folds.scm b/queries/squirrel/folds.scm new file mode 100644 index 000000000..db0b9c581 --- /dev/null +++ b/queries/squirrel/folds.scm @@ -0,0 +1,27 @@ +[ + (class_declaration) + (function_declaration) + (member_declaration) + (enum_declaration) + + (array) + (block) + (table) + (anonymous_function) + (parenthesized_expression) + + (string) + (verbatim_string) + + (comment) + + (if_statement) + (else_statement) + (while_statement) + (do_while_statement) + (switch_statement) + (for_statement) + (foreach_statement) + (try_statement) + (catch_statement) +] @fold diff --git a/queries/squirrel/highlights.scm b/queries/squirrel/highlights.scm new file mode 100644 index 000000000..b35c7cbf1 --- /dev/null +++ b/queries/squirrel/highlights.scm @@ -0,0 +1,307 @@ +; Keywords + +[ + "class" + "clone" + "delete" + "enum" + "extends" + "rawcall" + "resume" + "var" +] @keyword + +[ + "function" +] @keyword.function + +[ + "in" + "instanceof" + "typeof" +] @keyword.operator + +[ + "return" + "yield" +] @keyword.return + +((global_variable + "::" + (_) @keyword.coroutine) + (#any-of? @keyword.coroutine "suspend" "newthread")) + +; Conditionals + +[ + "if" + "else" + "switch" + "case" + "default" + "break" +] @conditional + +; Repeats + +[ + "for" + "foreach" + "do" + "while" + "continue" +] @repeat + +; Exceptions + +[ + "try" + "catch" + "throw" +] @exception + +; Storageclasses + +[ + "local" +] @storageclass + +; Qualifiers + +[ + "static" + "const" +] @type.qualifier + +; Variables + +(identifier) @variable + +(local_declaration + (identifier) @variable.local + . "=") + + +(global_variable) @variable.global + +((identifier) @variable.builtin + (#any-of? @variable.builtin "base" "this" "vargv")) + +; Parameters + +(parameter + . (identifier) @parameter) + +; Properties (Slots) + +(deref_expression + "." + . (identifier) @property) + +(member_declaration + (identifier) @property + . "=") + +((table_slot + . (identifier) @property + . ["=" ":"]) + (#set! "priority" 105)) + +; Types + +((identifier) @type + (#lua-match? @type "^[A-Z]")) + +(class_declaration + (identifier) @type + "extends"? . (identifier)? @type) + +(enum_declaration + (identifier) @type) + +; Attributes + +(attribute_declaration + left: (identifier) @attribute) + +; Functions & Methods + +(member_declaration + (function_declaration + "::"? (_) @method . "(" (_)? ")")) + +((function_declaration + "::"? (_) @function . "(" (_)? ")") + (#not-has-ancestor? @function member_declaration)) + +(call_expression + function: (identifier) @function.call) + +(call_expression + function: (deref_expression + "." . (identifier) @function.call)) + +(call_expression + (global_variable + "::" + (_) @function.call)) + +(_ + (identifier) @function + "=" + (lambda_expression + "@" @symbol)) + +(call_expression + [ + function: (identifier) @function.builtin + function: (global_variable "::" (_) @function.builtin) + function: (deref_expression "." (_) @function.builtin) + ] + (#any-of? @function.builtin + ; General Methods + "assert" "array" "callee" "collectgarbage" "compilestring" + "enabledebughook" "enabledebuginfo" "error" "getconsttable" + "getroottable" "print" "resurrectunreachable" "setconsttable" + "setdebughook" "seterrorhandler" "setroottable" "type" + + ; Hidden Methods + "_charsize_" "_intsize_" "_floatsize_" "_version_" "_versionnumber_" + + ; Number Methods + "tofloat" "tostring" "tointeger" "tochar" + + ; String Methods + "len" "slice" "find" "tolower" "toupper" + + ; Table Methods + "rawget" "rawset" "rawdelete" "rawin" "clear" + "setdelegate" "getdelegate" "filter" "keys" "values" + + ; Array Methods + "append" "push" "extend" "pop" "top" "insert" "remove" "resize" "sort" + "reverse" "map" "apply" "reduce" + + ; Function Methods + "call" "pcall" "acall" "pacall" "setroot" "getroot" "bindenv" "getinfos" + + ; Class Methods + "instance" "getattributes" "setattributes" "newmember" "rawnewmember" + + ; Class Instance Methods + "getclass" + + ; Generator Methods + "getstatus" + + ; Thread Methods + "call" "wakeup" "wakeupthrow" "getstackinfos" + + ; Weak Referece Methods + "ref" "weakref" +)) + +(member_declaration + "constructor" @constructor) + +; Constants + +(const_declaration + "const" + . (identifier) @constant) + +(enum_declaration + "{" + . (identifier) @constant) + +((identifier) @constant + (#lua-match? @constant "^_*[A-Z][A-Z%d_]*$")) + +; Operators + +[ + "+" + "-" + "*" + "/" + "%" + "||" + "&&" + "|" + "^" + "&" + "==" + "!=" + "<=>" + ">" + ">=" + "<=" + "<" + "<<" + ">>" + ">>>" + "=" + "<-" + "+=" + "-=" + "*=" + "/=" + "%=" + "~" + "!" + "++" + "--" +] @operator + +; Punctuation + +[ "{" "}" ] @punctuation.bracket + +[ "[" "]" ] @punctuation.bracket + +[ "(" ")" ] @punctuation.bracket + +[ "</" "/>" ] @punctuation.bracket + +[ + "." + "," + ";" + ":" +] @punctuation.delimiter + +[ + "::" + "..." +] @punctuation.special + +; Ternaries + +(ternary_expression + "?" @conditional.ternary + ":" @conditional.ternary) + +; Literals + +(string) @string + +(verbatim_string) @string.special + +(char) @character + +(escape_sequence) @string.escape + +(integer) @number + +(float) @float + +(bool) @boolean + +(null) @constant.builtin + +; Comments + +(comment) @comment @spell + +((comment) @comment.documentation + (#lua-match? @comment.documentation "^/[*][*][^*].*[*]/$")) diff --git a/queries/squirrel/indents.scm b/queries/squirrel/indents.scm new file mode 100644 index 000000000..6649b732b --- /dev/null +++ b/queries/squirrel/indents.scm @@ -0,0 +1,58 @@ +[ + (class_declaration) + (function_declaration) + (enum_declaration) + + (array) + (block) + (table) + (anonymous_function) + (parenthesized_expression) + + (while_statement) + (switch_statement) + (for_statement) + (foreach_statement) + ; (try_statement) + (catch_statement) +] @indent + +( + (if_statement) + (ERROR "else") @indent +) + +(if_statement + condition: (_) @indent) + +(if_statement + consequence: (_) + (else_statement) @indent) + +(do_while_statement + "do" + (_) @indent) + +(try_statement + (_) @indent + (catch_statement) @indent) + +[ "{" "}" ] @branch + +[ "(" ")" ] @branch + +[ "[" "]" ] @branch + +[ + "}" + ")" + "]" +] @indent_end + +[ + (ERROR) + (comment) + + (string) + (verbatim_string) +] @auto diff --git a/queries/squirrel/injections.scm b/queries/squirrel/injections.scm new file mode 100644 index 000000000..97cd40350 --- /dev/null +++ b/queries/squirrel/injections.scm @@ -0,0 +1,9 @@ +(comment) @comment + +((verbatim_string) @html + (#lua-match? @html "^@\"<html") + (#offset! @html 0 2 0 -1)) + +((verbatim_string) @html + (#lua-match? @html "@\"<!DOCTYPE html>") + (#offset! @html 0 2 0 -1)) diff --git a/queries/squirrel/locals.scm b/queries/squirrel/locals.scm new file mode 100644 index 000000000..11486d1e4 --- /dev/null +++ b/queries/squirrel/locals.scm @@ -0,0 +1,67 @@ +; Scopes + +[ + (script) + (class_declaration) + (enum_declaration) + (function_declaration) + (attribute_declaration) + + (array) + (block) + (table) + (anonymous_function) + (parenthesized_expression) + + (if_statement) + (else_statement) + (while_statement) + (do_while_statement) + (switch_statement) + (for_statement) + (foreach_statement) + (try_statement) + (catch_statement) +] @scope + + +; References + +[ + (identifier) + (global_variable) +] @reference + +; Definitions + +(const_declaration + . (identifier) @definition.constant) + +(enum_declaration + . (identifier) @definition.enum) + +(member_declaration + (identifier) @definition.field + . "=") + +(table_slot + . (identifier) @definition.field + . ["=" ":"]) + +((function_declaration + . (identifier) @definition.function) + (#not-has-ancestor? @definition.function member_declaration)) + +(member_declaration + (function_declaration + . (identifier) @definition.method)) + +(class_declaration + . (identifier) @definition.type) + +(var_statement + "var" . (identifier) @definition.variable) + +(local_declaration + (identifier) @definition.variable + . "=") |
