From c93379b75b70596b5fd86dcfab692e39e8e7a700 Mon Sep 17 00:00:00 2001 From: Ching Pei Yang Date: Thu, 3 Apr 2025 11:34:58 +0200 Subject: [PATCH 1/2] package: add nvf-queries package --- flake/legacyPackages.nix | 3 ++ flake/legacyPackages/nvf-queries.nix | 10 ++++++ .../nvf-queries/queries/nix/injections.scm | 34 +++++++++++++++++++ lib/types/plugins.nix | 2 +- modules/wrapper/build/config.nix | 2 +- 5 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 flake/legacyPackages/nvf-queries.nix create mode 100644 flake/legacyPackages/nvf-queries/queries/nix/injections.scm diff --git a/flake/legacyPackages.nix b/flake/legacyPackages.nix index 33aee0e3..d2df5c57 100644 --- a/flake/legacyPackages.nix +++ b/flake/legacyPackages.nix @@ -17,6 +17,9 @@ # Build nil from source to get most recent # features as they are added. nil = inputs'.nil.packages.default; + nvf-queries = final.callPackage ./legacyPackages/nvf-queries.nix { + version = self.shortRev or self.dirtyShortRev or "dirty"; + }; blink-cmp = let pin = self.pins.blink-cmp; in diff --git a/flake/legacyPackages/nvf-queries.nix b/flake/legacyPackages/nvf-queries.nix new file mode 100644 index 00000000..e88d8606 --- /dev/null +++ b/flake/legacyPackages/nvf-queries.nix @@ -0,0 +1,10 @@ +{ + vimUtils, + version, +}: +vimUtils.buildVimPlugin { + pname = "nvf-queries"; + inherit version; + + src = ./nvf-queries; +} diff --git a/flake/legacyPackages/nvf-queries/queries/nix/injections.scm b/flake/legacyPackages/nvf-queries/queries/nix/injections.scm new file mode 100644 index 00000000..5799175b --- /dev/null +++ b/flake/legacyPackages/nvf-queries/queries/nix/injections.scm @@ -0,0 +1,34 @@ +; extends + +(binding + attrpath: (attrpath + (identifier) @_path) + expression: [ + (string_expression + (string_fragment) @injection.content) + (indented_string_expression + (string_fragment) @injection.content) + ] + (#set! injection.language "lua") + (#match? @_path "^luaConfig\(Pre\|Post\)$")) + +(apply_expression + function: [ + (variable_expression + name: (identifier) @funcName + (#eq? @funcName "mkLuaInline")) + ;; matches lib.generators.mkLuaInline + (select_expression + expression: _ @lib + (#eq? @lib "lib") + (attrpath + attr: (identifier) @generators + attr: (identifier) @funcName)) + ] + argument: [ + (string_expression + (string_fragment) @injection.content) + (indented_string_expression + (string_fragment) @injection.content) + ] + (#set! injection.language "lua")) diff --git a/lib/types/plugins.nix b/lib/types/plugins.nix index fc2bd083..78e478e2 100644 --- a/lib/types/plugins.nix +++ b/lib/types/plugins.nix @@ -18,7 +18,7 @@ pluginType = nullOr ( either package - (enum (pluginInputNames ++ ["nvim-treesitter" "flutter-tools-patched" "vim-repeat"])) + (enum (pluginInputNames ++ ["nvim-treesitter" "flutter-tools-patched" "vim-repeat" "nvf-queries"])) ); pluginsType = listOf pluginType; diff --git a/modules/wrapper/build/config.nix b/modules/wrapper/build/config.nix index 3b147571..224be2e0 100644 --- a/modules/wrapper/build/config.nix +++ b/modules/wrapper/build/config.nix @@ -51,7 +51,7 @@ doCheck = false; }; - inherit (inputs.self.legacyPackages.${pkgs.stdenv.system}) blink-cmp; + inherit (inputs.self.legacyPackages.${pkgs.stdenv.system}) blink-cmp nvf-queries; }; buildConfigPlugins = plugins: From f084b74a5642934f260687a9534c7ea8acbce67d Mon Sep 17 00:00:00 2001 From: Ching Pei Yang Date: Thu, 3 Apr 2025 11:49:27 +0200 Subject: [PATCH 2/2] language/nix: add option for nvf-queries --- modules/plugins/languages/nix.nix | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/modules/plugins/languages/nix.nix b/modules/plugins/languages/nix.nix index ad16a34e..dc9fcb71 100644 --- a/modules/plugins/languages/nix.nix +++ b/modules/plugins/languages/nix.nix @@ -140,6 +140,13 @@ in { treesitter = { enable = mkEnableOption "Nix treesitter" // {default = config.vim.languages.enableTreesitter;}; package = mkGrammarOption pkgs "nix"; + + enableNvfQueries = + mkEnableOption '' + extra query files targetted at nvf configuration, e.g. injection rules + for mkLuaInline and some options. + '' + // {default = true;}; }; lsp = { @@ -212,8 +219,11 @@ in { } (mkIf cfg.treesitter.enable { - vim.treesitter.enable = true; - vim.treesitter.grammars = [cfg.treesitter.package]; + vim = { + treesitter.enable = true; + treesitter.grammars = [cfg.treesitter.package]; + startPlugins = mkIf cfg.treesitter.enableNvfQueries ["nvf-queries"]; + }; }) (mkIf cfg.lsp.enable {