aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBlockLune <39331194+BlockLune@users.noreply.github.com>2025-08-30 00:30:18 +0800
committerGitHub <noreply@github.com>2025-08-29 18:30:18 +0200
commitcd64fd3f448eb6cc529830c7f265f7584168572b (patch)
treea017d25a103291d0e05b914486ac7d346a6ad341
parentfeat(matlab)!: update parser and queries (diff)
downloadnvim-treesitter-cd64fd3f448eb6cc529830c7f265f7584168572b.tar
nvim-treesitter-cd64fd3f448eb6cc529830c7f265f7584168572b.tar.gz
nvim-treesitter-cd64fd3f448eb6cc529830c7f265f7584168572b.tar.bz2
nvim-treesitter-cd64fd3f448eb6cc529830c7f265f7584168572b.tar.lz
nvim-treesitter-cd64fd3f448eb6cc529830c7f265f7584168572b.tar.xz
nvim-treesitter-cd64fd3f448eb6cc529830c7f265f7584168572b.tar.zst
nvim-treesitter-cd64fd3f448eb6cc529830c7f265f7584168572b.zip
feat(wxml): add parser and queries
-rw-r--r--SUPPORTED_LANGUAGES.md1
-rw-r--r--lua/nvim-treesitter/parsers.lua8
-rw-r--r--runtime/queries/wxml/folds.scm7
-rw-r--r--runtime/queries/wxml/highlights.scm66
-rw-r--r--runtime/queries/wxml/indents.scm32
-rw-r--r--runtime/queries/wxml/injections.scm10
6 files changed, 124 insertions, 0 deletions
diff --git a/SUPPORTED_LANGUAGES.md b/SUPPORTED_LANGUAGES.md
index ceb928e72..25c5e1137 100644
--- a/SUPPORTED_LANGUAGES.md
+++ b/SUPPORTED_LANGUAGES.md
@@ -326,6 +326,7 @@ jsx (queries only)[^jsx] | unstable | `HFIJ ` | | @steelsojka
[wgsl_bevy](https://github.com/tree-sitter-grammars/tree-sitter-wgsl-bevy) | unstable | `HFI  ` | | @theHamsta
[wing](https://github.com/winglang/tree-sitter-wing) | unstable | `HF JL` | | @gshpychka, @MarkMcCulloh
[wit](https://github.com/bytecodealliance/tree-sitter-wit) | unstable | `HF J ` | | @mkatychev
+[wxml](https://github.com/BlockLune/tree-sitter-wxml) | unstable | `HFIJ ` | | @BlockLune
[xcompose](https://github.com/tree-sitter-grammars/tree-sitter-xcompose) | unstable | `H  JL` | | @ObserverOfTime
[xml](https://github.com/tree-sitter-grammars/tree-sitter-xml) | unstable | `HFIJL` | | @ObserverOfTime
[xresources](https://github.com/ValdezFOmar/tree-sitter-xresources) | unstable | `HF JL` | | @ValdezFOmar
diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua
index 3abe166a1..027c8f745 100644
--- a/lua/nvim-treesitter/parsers.lua
+++ b/lua/nvim-treesitter/parsers.lua
@@ -2587,6 +2587,14 @@ return {
maintainers = { '@mkatychev' },
tier = 2,
},
+ wxml = {
+ install_info = {
+ revision = '7b821c748dc410332f59496c0dea2632168c4e5a',
+ url = 'https://github.com/BlockLune/tree-sitter-wxml',
+ },
+ maintainers = { '@BlockLune' },
+ tier = 2,
+ },
xcompose = {
install_info = {
revision = 'a51d6366f041dbefec4da39a7eb3168a9b1cbc0e',
diff --git a/runtime/queries/wxml/folds.scm b/runtime/queries/wxml/folds.scm
new file mode 100644
index 000000000..df3eeeef7
--- /dev/null
+++ b/runtime/queries/wxml/folds.scm
@@ -0,0 +1,7 @@
+[
+ (element)
+ (block_element)
+ (slot_element)
+ (template_element)
+ (wxs_element)
+] @fold
diff --git a/runtime/queries/wxml/highlights.scm b/runtime/queries/wxml/highlights.scm
new file mode 100644
index 000000000..5bdbd5d50
--- /dev/null
+++ b/runtime/queries/wxml/highlights.scm
@@ -0,0 +1,66 @@
+; Comments
+(comment) @comment @spell
+
+; Text
+(text) @spell
+
+; Tag names
+(tag_name) @tag
+
+((tag_name) @tag.builtin
+ (#any-of? @tag.builtin "wxs" "template" "import" "include" "slot" "block"))
+
+; Attributes
+(attribute_name) @tag.attribute
+
+(attribute_value) @string
+
+(quoted_attribute_value) @string
+
+; WeChat specific attributes
+((attribute_name) @keyword.directive
+ (#lua-match? @keyword.directive "^wx:"))
+
+((attribute_name) @keyword.conditional
+ (#any-of? @keyword.conditional "wx:if" "wx:elif" "wx:else"))
+
+((attribute_name) @keyword.repeat
+ (#any-of? @keyword.repeat "wx:for" "wx:for-index" "wx:for-item"))
+
+((attribute_name) @keyword
+ (#lua-match? @keyword "^bind"))
+
+((attribute_name) @keyword
+ (#lua-match? @keyword "^catch"))
+
+((attribute_name) @keyword
+ (#lua-match? @keyword "^mut%-bind"))
+
+((attribute_name) @keyword
+ (#lua-match? @keyword "^model:"))
+
+((attribute_name) @keyword
+ (#lua-match? @keyword "^data-"))
+
+((attribute
+ (attribute_name) @_attr
+ (quoted_attribute_value) @string.special.url)
+ (#any-of? @_attr "href" "src")
+ (#offset! @string.special.url 0 1 0 -1))
+
+; Entity references
+(entity) @character.special
+
+; Interpolation delimiters
+(interpolation_start) @punctuation.special
+
+(interpolation_end) @punctuation.special
+
+[
+ "<"
+ ">"
+ "</"
+ "/>"
+] @tag.delimiter
+
+"=" @operator
diff --git a/runtime/queries/wxml/indents.scm b/runtime/queries/wxml/indents.scm
new file mode 100644
index 000000000..30172bb37
--- /dev/null
+++ b/runtime/queries/wxml/indents.scm
@@ -0,0 +1,32 @@
+; inherits: html_tags
+
+(block_element) @indent.begin
+
+(template_element) @indent.begin
+
+(wxs_element) @indent.begin
+
+(block_element
+ (block_end_tag
+ ">" @indent.end))
+
+(template_element
+ (template_end_tag
+ ">" @indent.end))
+
+(wxs_element
+ (wxs_end_tag
+ ">" @indent.end))
+
+(block_element
+ (block_end_tag) @indent.branch)
+
+(template_element
+ (template_end_tag) @indent.branch)
+
+(wxs_element
+ (wxs_end_tag) @indent.branch)
+
+(import_statement) @indent.ignore
+
+(include_statement) @indent.ignore
diff --git a/runtime/queries/wxml/injections.scm b/runtime/queries/wxml/injections.scm
new file mode 100644
index 000000000..09f615d38
--- /dev/null
+++ b/runtime/queries/wxml/injections.scm
@@ -0,0 +1,10 @@
+((comment) @injection.content
+ (#set! injection.language "comment"))
+
+((raw_text) @injection.content
+ (#set! injection.language "javascript")
+ (#set! injection.include-children))
+
+((expression) @injection.content
+ (#set! injection.language "javascript")
+ (#set! injection.include-children))