aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/surface
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2023-06-12 09:54:30 -0600
committerChristian Clason <c.clason@uni-graz.at>2025-05-12 18:43:40 +0200
commit692b051b09935653befdb8f7ba8afdb640adf17b (patch)
tree167162b6b129ae04f68c5735078521a72917c742 /runtime/queries/surface
parentfeat(c-family): inherit injections (diff)
downloadnvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.gz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.bz2
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.lz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.xz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.zst
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.zip
feat!: drop modules, general refactor and cleanup
Diffstat (limited to 'runtime/queries/surface')
-rw-r--r--runtime/queries/surface/folds.scm6
-rw-r--r--runtime/queries/surface/highlights.scm44
-rw-r--r--runtime/queries/surface/indents.scm14
-rw-r--r--runtime/queries/surface/injections.scm10
4 files changed, 74 insertions, 0 deletions
diff --git a/runtime/queries/surface/folds.scm b/runtime/queries/surface/folds.scm
new file mode 100644
index 000000000..994f12e1e
--- /dev/null
+++ b/runtime/queries/surface/folds.scm
@@ -0,0 +1,6 @@
+; Surface folds similar to HTML and includes blocks
+[
+ (tag)
+ (component)
+ (block)
+] @fold
diff --git a/runtime/queries/surface/highlights.scm b/runtime/queries/surface/highlights.scm
new file mode 100644
index 000000000..b874b8c1d
--- /dev/null
+++ b/runtime/queries/surface/highlights.scm
@@ -0,0 +1,44 @@
+; Surface text is not highlighted
+(text) @none
+
+; Surface has two types of comments, both are highlighted as such
+(comment) @comment @spell
+
+; Surface attributes are highlighted as HTML attributes
+(attribute_name) @tag.attribute
+
+; Attributes are highlighted as strings
+(quoted_attribute_value) @string
+
+; Surface blocks are highlighted as keywords
+[
+ (start_block)
+ (end_block)
+ (subblock)
+] @keyword
+
+; Surface supports HTML tags and are highlighted as such
+[
+ "<"
+ ">"
+ "</"
+ "/>"
+ "{"
+ "}"
+ "<!--"
+ "-->"
+ "{!--"
+ "--}"
+] @tag.delimiter
+
+; 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/runtime/queries/surface/indents.scm b/runtime/queries/surface/indents.scm
new file mode 100644
index 000000000..1df9fe6fd
--- /dev/null
+++ b/runtime/queries/surface/indents.scm
@@ -0,0 +1,14 @@
+; Surface indents like HTML, with the addition of blocks
+[
+ (component)
+ (tag)
+ (block)
+] @indent.begin
+
+; Dedent at the end of each tag, as well as a subblock
+[
+ (end_tag)
+ (end_component)
+ (end_block)
+ (subblock)
+] @indent.branch
diff --git a/runtime/queries/surface/injections.scm b/runtime/queries/surface/injections.scm
new file mode 100644
index 000000000..72cab5e80
--- /dev/null
+++ b/runtime/queries/surface/injections.scm
@@ -0,0 +1,10 @@
+; Surface expressions and components are Elixir code
+([
+ (expression_value)
+ (component_name)
+] @injection.content
+ (#set! injection.language "elixir"))
+
+; Surface comments are nvim-treesitter comments
+((comment) @injection.content
+ (#set! injection.language "comment"))