diff options
Diffstat (limited to 'queries')
| -rw-r--r-- | queries/elixir/highlights.scm | 4 | ||||
| -rw-r--r-- | queries/elixir/injections.scm | 5 | ||||
| -rw-r--r-- | queries/surface/folds.scm | 5 | ||||
| -rw-r--r-- | queries/surface/highlights.scm | 46 | ||||
| -rw-r--r-- | queries/surface/indents.scm | 12 | ||||
| -rw-r--r-- | queries/surface/injections.scm | 8 |
6 files changed, 80 insertions, 0 deletions
diff --git a/queries/elixir/highlights.scm b/queries/elixir/highlights.scm index bcbc4391..51c57494 100644 --- a/queries/elixir/highlights.scm +++ b/queries/elixir/highlights.scm @@ -78,6 +78,10 @@ remote: [(atom) (module)] @type function: (function_identifier) @method) +(dot_call + remote: (identifier) @variable + function: (function_identifier) @method) + "fn" @keyword.function ; def, defp, defguard, ... everything that starts with def diff --git a/queries/elixir/injections.scm b/queries/elixir/injections.scm index 0f12cdba..02709add 100644 --- a/queries/elixir/injections.scm +++ b/queries/elixir/injections.scm @@ -8,3 +8,8 @@ (sigil_start) @_start (sigil_content) @regex) (#match? @_start "~(r|R)[/</\\\"[({|]")) + +((sigil + (sigil_start) @_start + (sigil_content) @surface) + (#eq? @_start "~F\"\"\"")) diff --git a/queries/surface/folds.scm b/queries/surface/folds.scm new file mode 100644 index 00000000..57763a6e --- /dev/null +++ b/queries/surface/folds.scm @@ -0,0 +1,5 @@ +; Surface folds similar to HTML and includes blocks +[ + (tag) + (block) +] @fold diff --git a/queries/surface/highlights.scm b/queries/surface/highlights.scm new file mode 100644 index 00000000..77b88c05 --- /dev/null +++ b/queries/surface/highlights.scm @@ -0,0 +1,46 @@ +; Surface text is highlighted as such +(text) @text + +; Surface has two types of comments, both are highlighted as such +(comment) @comment + +; Surface attributes are highlighted as HTML attributes +(attribute_name) @tag.attribute + +; Attributes are highlighted as strings +(attribute_value) @string + +; Surface blocks are highlighted as keywords +[ + (start_block) + (end_block) + (subblock) +] @keyword + +; Surface supports HTML tags and are highlighted as such +[ + (start_tag) + (end_tag) + (self_closing_tag) + (start_component) + (end_component) + (self_closing_component) +] @tag.delimiter + +; Expressions are similar to string interpolation, and are highloghted as such +(expression) @punctuation.special + +; Expressions should be highlighted as Elixir, fallback to special strings +(expression_value) @string.special + +; Surface tags are highlighted as HTML +(tag_name) @tag + +; Surface components are highlighted as types (Elixir modules) +(component_name) @type + +; Surface directives are highlighted as keywords +(directive_name) @keyword + +; Surface operators +["="] @operator diff --git a/queries/surface/indents.scm b/queries/surface/indents.scm new file mode 100644 index 00000000..ad683575 --- /dev/null +++ b/queries/surface/indents.scm @@ -0,0 +1,12 @@ +; Surface indents like HTML, with the addition of blocks +[ + (tag) + (block) +] @indent + +; Dedent at the end of each tag, as well as a subblock +[ + (end_tag) + (end_block) + (subblock) +] @branch diff --git a/queries/surface/injections.scm b/queries/surface/injections.scm new file mode 100644 index 00000000..928977a3 --- /dev/null +++ b/queries/surface/injections.scm @@ -0,0 +1,8 @@ +; Surface expressions and components are Elixir code +[ + (expression_value) + (component_name) +] @elixir + +; Surface comments are nvim-treesitter comments +(comment) @comment |
