aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--lockfile.json3
-rw-r--r--lua/nvim-treesitter/parsers.lua8
-rw-r--r--queries/liquid/highlights.scm130
-rw-r--r--queries/liquid/injections.scm22
5 files changed, 164 insertions, 0 deletions
diff --git a/README.md b/README.md
index 2851b05bf..678b436c3 100644
--- a/README.md
+++ b/README.md
@@ -299,6 +299,7 @@ We are looking for maintainers to add more parsers and to write query files for
- [x] [ledger](https://github.com/cbarrete/tree-sitter-ledger) (maintained by @cbarrete)
- [x] [leo](https://github.com/r001/tree-sitter-leo) (maintained by @r001)
- [x] [linkerscript](https://github.com/amaanq/tree-sitter-linkerscript) (maintained by @amaanq)
+- [x] [liquid](https://github.com/hankthetank27/tree-sitter-liquid) (maintained by @hankthetank27)
- [x] [liquidsoap](https://github.com/savonet/tree-sitter-liquidsoap) (maintained by @toots)
- [x] [llvm](https://github.com/benwilliamgraham/tree-sitter-llvm) (maintained by @benwilliamgraham)
- [x] [lua](https://github.com/MunifTanjim/tree-sitter-lua) (maintained by @muniftanjim)
diff --git a/lockfile.json b/lockfile.json
index 3fd6cb5ac..4fbfd8abf 100644
--- a/lockfile.json
+++ b/lockfile.json
@@ -377,6 +377,9 @@
"linkerscript": {
"revision": "f99011a3554213b654985a4b0a65b3b032ec4621"
},
+ "liquid": {
+ "revision": "06a18b68eaa5665c6eeef30e355878835e473d15"
+ },
"liquidsoap": {
"revision": "09a9e31e2af734a8974dad6ed349648f601eee8c"
},
diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua
index 756c5408e..70379f1dd 100644
--- a/lua/nvim-treesitter/parsers.lua
+++ b/lua/nvim-treesitter/parsers.lua
@@ -1131,6 +1131,14 @@ list.linkerscript = {
maintainers = { "@amaanq" },
}
+list.liquid = {
+ install_info = {
+ url = "https://github.com/hankthetank27/tree-sitter-liquid",
+ files = { "src/parser.c", "src/scanner.c" },
+ },
+ maintainers = { "@hankthetank27" },
+}
+
list.liquidsoap = {
install_info = {
url = "https://github.com/savonet/tree-sitter-liquidsoap",
diff --git a/queries/liquid/highlights.scm b/queries/liquid/highlights.scm
new file mode 100644
index 000000000..a1bf61169
--- /dev/null
+++ b/queries/liquid/highlights.scm
@@ -0,0 +1,130 @@
+((comment) @comment @spell
+ (#set! priority 110))
+
+(raw_statement
+ (raw_content) @spell
+ (#set! priority 110))
+
+((identifier) @variable
+ (#set! priority 110))
+
+((string) @string
+ (#set! priority 110))
+
+((boolean) @boolean
+ (#set! priority 110))
+
+((number) @number
+ (#set! priority 110))
+
+(filter
+ name: (identifier) @function.call
+ (#set! priority 110))
+
+([
+ "as"
+ "assign"
+ "capture"
+ "decrement"
+ "echo"
+ "endcapture"
+ "endform"
+ "endjavascript"
+ "endraw"
+ "endschema"
+ "endstyle"
+ "form"
+ "increment"
+ "javascript"
+ "layout"
+ "liquid"
+ "raw"
+ "schema"
+ "style"
+ "with"
+] @keyword
+ (#set! priority 110))
+
+([
+ "case"
+ "else"
+ "elsif"
+ "endcase"
+ "endif"
+ "endunless"
+ "if"
+ "unless"
+ "when"
+] @keyword.conditional
+ (#set! priority 110))
+
+([
+ "break"
+ "by"
+ "continue"
+ "cycle"
+ "endfor"
+ "endpaginate"
+ "endtablerow"
+ "for"
+ "paginate"
+ "tablerow"
+] @keyword.repeat
+ (#set! priority 110))
+
+([
+ "and"
+ "contains"
+ "in"
+ "or"
+] @keyword.operator
+ (#set! priority 110))
+
+([
+ "{{"
+ "}}"
+ "{{-"
+ "-}}"
+ "{%"
+ "%}"
+ "{%-"
+ "-%}"
+] @tag.delimiter
+ (#set! priority 110))
+
+[
+ "include"
+ "render"
+ "section"
+ "sections"
+] @keyword.import
+
+[
+ "|"
+ ":"
+ "="
+ "+"
+ "-"
+ "*"
+ "/"
+ "%"
+ "^"
+ "=="
+ "<"
+ "<="
+ "!="
+ ">="
+ ">"
+] @operator
+
+[
+ "]"
+ "["
+ ")"
+ "("
+] @punctuation.bracket
+
+[
+ ","
+ "."
+] @punctuation.delimiter
diff --git a/queries/liquid/injections.scm b/queries/liquid/injections.scm
new file mode 100644
index 000000000..fa7457659
--- /dev/null
+++ b/queries/liquid/injections.scm
@@ -0,0 +1,22 @@
+((template_content) @injection.content
+ (#set! injection.language "html")
+ (#set! injection.combined))
+
+; TODO we can switch to quantifiers once neovim 0.10 becomes stable
+(javascript_statement
+ (js_content) @injection.content
+ (#set! injection.language "javascript")
+ (#set! injection.combined))
+
+(schema_statement
+ (json_content) @injection.content
+ (#set! injection.language "json")
+ (#set! injection.combined))
+
+(style_statement
+ (style_content) @injection.content
+ (#set! injection.language "css")
+ (#set! injection.combined))
+
+((comment) @injection.content
+ (#set! injection.language "comment"))