From cee03d0c97ff63483a2791224944f9ab754a6ec6 Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Thu, 23 Apr 2026 22:59:05 +0200 Subject: [PATCH] languages/nix: fix treesitter nvf query for vim.treesitter.queries --- docs/manual/release-notes/rl-0.9.md | 5 ++- modules/plugins/languages/nix.nix | 66 ++++++++++++----------------- 2 files changed, 30 insertions(+), 41 deletions(-) diff --git a/docs/manual/release-notes/rl-0.9.md b/docs/manual/release-notes/rl-0.9.md index 803bcc4a..995d74f0 100644 --- a/docs/manual/release-notes/rl-0.9.md +++ b/docs/manual/release-notes/rl-0.9.md @@ -277,8 +277,9 @@ - Added {option}`vim.treesitter.queries` to support adding custom queries. -- Added injections for `vim.treesitter.queries.*.content` as `query` and - `mkLualine`, `entryAnywhere`, `entryBefore`, `entryAfter` as `lua` in nix. +- Added injections for `query = '' ... ''` as `query` and `mkLualine '' ... ''`, + `entryAnywhere '' ... ''`, `entryBefore [] '' ... ''`, + `entryAfter [] '' ... ''` as `lua` in nix. - Added {option}`vim.languages.tera.treesitter.injection` to configure, what language the content is. diff --git a/modules/plugins/languages/nix.nix b/modules/plugins/languages/nix.nix index 09507a55..3a992bb2 100644 --- a/modules/plugins/languages/nix.nix +++ b/modules/plugins/languages/nix.nix @@ -132,53 +132,41 @@ in { enable = true; grammars = [cfg.treesitter.package]; queries = [ - # vim.treesitter.queries.*.content + # query = ''; -> query { type = "injections"; filetypes = ["nix"]; - content = '' + query = '' ;; extends ((binding attrpath: (attrpath - (identifier) @_a - (identifier) @_b - (identifier)? @_c) - (#eq? @_a "vim") - (#any-of? @_b "treesitter") - (#any-of? @_c "queries") - - expression: (attrset_expression - (binding_set - (binding - attrpath: (attrpath - (identifier) @_queries) - (#eq? @_queries "queries") - - expression: (list_expression - (attrset_expression - (binding_set - (binding - attrpath: (attrpath - (identifier) @_field) - (#eq? @_field "content") - - expression: [ - (string_expression - (string_fragment) @injection.content) - (indented_string_expression - (string_fragment) @injection.content) - ] - - (#set! injection.language "query") - (#set! injection.combined)))))))))) + (identifier) @_path) + (#eq? @_path "query") + expression: [ + (string_expression + ((string_fragment) @injection.content + (#set! injection.language "query"))) + (indented_string_expression + ((string_fragment) @injection.content + (#set! injection.language "query"))) + (apply_expression + argument: [ + (string_expression + ((string_fragment) @injection.content + (#set! injection.language "query"))) + (indented_string_expression + ((string_fragment) @injection.content + (#set! injection.language "query"))) + ]) + ])) ''; } - # mkLuaInline, entryAnywhere, entryBefore, entryAfter = lua + # mkLuaInline, entryAnywhere, entryBefore, entryAfter -> lua { type = "injections"; filetypes = ["nix"]; - content = '' + query = '' ;; extends ((apply_expression @@ -187,8 +175,8 @@ in { (#any-of? @_func "mkLuaInline" "entryAnywhere")) argument: (indented_string_expression (string_fragment) @injection.content)) - (#set! injection.language "lua") - (#set! injection.combined)) + (#set! injection.language "lua") + (#set! injection.combined)) ((apply_expression function: (apply_expression @@ -198,8 +186,8 @@ in { argument: (_)) argument: (indented_string_expression (string_fragment) @injection.content)) - (#set! injection.language "lua") - (#set! injection.combined)) + (#set! injection.language "lua") + (#set! injection.combined)) ''; } ];