diff --git a/plugins/languages/treesitter/treesitter.nix b/plugins/languages/treesitter/treesitter.nix index 1b7988dd..37e5559a 100644 --- a/plugins/languages/treesitter/treesitter.nix +++ b/plugins/languages/treesitter/treesitter.nix @@ -91,6 +91,10 @@ in { default = {}; description = "This is the configuration for extra modules. It should not be used directly"; }; + + nixvimInjections = + mkEnableOption + "nixvim specific injections, like lua highlighting in extraConfigLua"; }; }; @@ -148,6 +152,20 @@ in { require('nvim-treesitter.configs').setup(${helpers.toLuaObject tsOptions}) ''; + extraFiles = mkIf cfg.nixvimInjections { + "queries/nix/injections.scm" = '' + ;; extends + + (binding + attrpath: (attrpath (identifier) @_path) + expression: [ + (string_expression (string_fragment) @lua) + (indented_string_expression (string_fragment) @lua) + ] + (#match? @_path "^extraConfigLua(Pre|Post)?$")) + ''; + }; + extraPlugins = with pkgs; if cfg.nixGrammars then [(cfg.package.withPlugins (_: cfg.grammarPackages))] diff --git a/tests/test-sources/plugins/languages/treesitter/treesitter.nix b/tests/test-sources/plugins/languages/treesitter/treesitter.nix index 2b816e9e..24d10a51 100644 --- a/tests/test-sources/plugins/languages/treesitter/treesitter.nix +++ b/tests/test-sources/plugins/languages/treesitter/treesitter.nix @@ -12,6 +12,13 @@ }; }; + nixvimInjections = { + plugins.treesitter = { + enable = true; + nixvimInjections = true; + }; + }; + # This needs a custom input # custom = { # plugins.treesitter = {