diff options
| author | postsolar <120750161+postsolar@users.noreply.github.com> | 2023-11-08 18:07:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-08 18:07:02 +0200 |
| commit | bf18ff20ae4d7b667b5e7ede0244c6596427d69e (patch) | |
| tree | a3fc33da986596dabbf5740f43cb456b0183f113 /queries/purescript | |
| parent | Update README (diff) | |
| download | nvim-treesitter-bf18ff20ae4d7b667b5e7ede0244c6596427d69e.tar nvim-treesitter-bf18ff20ae4d7b667b5e7ede0244c6596427d69e.tar.gz nvim-treesitter-bf18ff20ae4d7b667b5e7ede0244c6596427d69e.tar.bz2 nvim-treesitter-bf18ff20ae4d7b667b5e7ede0244c6596427d69e.tar.lz nvim-treesitter-bf18ff20ae4d7b667b5e7ede0244c6596427d69e.tar.xz nvim-treesitter-bf18ff20ae4d7b667b5e7ede0244c6596427d69e.tar.zst nvim-treesitter-bf18ff20ae4d7b667b5e7ede0244c6596427d69e.zip | |
feat(purescript): add parser and queries (#5626)
Diffstat (limited to 'queries/purescript')
| -rw-r--r-- | queries/purescript/highlights.scm | 152 | ||||
| -rw-r--r-- | queries/purescript/injections.scm | 2 | ||||
| -rw-r--r-- | queries/purescript/locals.scm | 4 |
3 files changed, 158 insertions, 0 deletions
diff --git a/queries/purescript/highlights.scm b/queries/purescript/highlights.scm new file mode 100644 index 000000000..3e3ec3cb8 --- /dev/null +++ b/queries/purescript/highlights.scm @@ -0,0 +1,152 @@ +; ---------------------------------------------------------------------------- +; Literals and comments + +[ + (integer) + (exp_negation) +] @number + (exp_literal (number)) @float + (char) @character + [ + (string) + (triple_quote_string) + ] @string + + (comment) @comment @spell + +; ---------------------------------------------------------------------------- +; Punctuation + + [ + "(" + ")" + "{" + "}" + "[" + "]" + ] @punctuation.bracket + + [ + (comma) + ";" + (qualified_module) ; grabs the `.` (dot), ex: import System.IO + "." + ] @punctuation.delimiter + + +; ---------------------------------------------------------------------------- +; Keywords, operators, includes + + [ + "if" + "then" + "else" + "case" + "of" + ] @conditional + + [ + "import" + "module" + ] @include + + [ + (operator) + (constructor_operator) + (type_operator) + (all_names) + + "=" + "|" + "::" + "∷" + "=>" + "⇒" + "<=" + "⇐" + "->" + "→" + "<-" + "←" + "\\" + "`" + "@" + ] @operator + + (qualified_module (module) @constructor) + (module) @namespace + (qualified_type (module) @namespace) + (qualified_variable (module) @namespace) + (import (module) @namespace) + + [ + (where) + "let" + "in" + "class" + "instance" + "derive" + "foreign" + "data" + "newtype" + "type" + "as" + "hiding" + "do" + "ado" + "forall" + "∀" + "infix" + "infixl" + "infixr" + ] @keyword + + (class_instance "else" @keyword) + + (type_role_declaration + "role" @keyword + role: (type_role) @type.qualifier) + + (hole) @character.special + + ; `_` wildcards in if-then-else and case-of expressions, + ; as well as record updates and operator sections + (wildcard) @parameter + +; ---------------------------------------------------------------------------- +; Functions and variables + + (variable) @variable + (exp_apply . (exp_name (variable) @function)) + (exp_apply . (exp_name (qualified_variable (variable) @function))) + + (row_field (field_name) @field) + (record_field (field_name) @field) + (record_accessor (variable) @field) + (exp_record_access (variable) @field) + + (signature name: (variable) @type) + (kind_declaration (class_name) @type) + (function name: (variable) @function) + (foreign_import (variable) @function) + (class_instance (instance_name) @function) + (derive_declaration (instance_name) @function) + + ; true or false + ((variable) @boolean + (#any-of? @boolean "true" "false")) + + ; The former one works for `tree-sitter highlight` but not in Helix/Kakoune. + ; The latter two work in Helix (but not Kakoune) and are a good compromise between not highlighting anything at all + ; as an operator and leaving it to the child nodes, and highlighting everything as an operator. + (exp_ticked (_) @operator) + (exp_ticked (exp_name (variable) @operator)) + (exp_ticked (exp_name (qualified_variable (variable) @operator))) + +; ---------------------------------------------------------------------------- +; Types + + (type) @type + + (constructor) @constructor + diff --git a/queries/purescript/injections.scm b/queries/purescript/injections.scm new file mode 100644 index 000000000..321c90add --- /dev/null +++ b/queries/purescript/injections.scm @@ -0,0 +1,2 @@ +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/queries/purescript/locals.scm b/queries/purescript/locals.scm new file mode 100644 index 000000000..d8219bf43 --- /dev/null +++ b/queries/purescript/locals.scm @@ -0,0 +1,4 @@ +(signature name: (variable)) @definition.type +(function name: (variable)) @definition.function +(pat_name (variable)) @definition +(exp_name (variable)) @reference |
