about summary refs log tree commit diff stats
path: root/modules/by-name/nv/nvim/plgs/treesitter/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/by-name/nv/nvim/plgs/treesitter/default.nix')
-rw-r--r--modules/by-name/nv/nvim/plgs/treesitter/default.nix63
1 files changed, 63 insertions, 0 deletions
diff --git a/modules/by-name/nv/nvim/plgs/treesitter/default.nix b/modules/by-name/nv/nvim/plgs/treesitter/default.nix
new file mode 100644
index 00000000..02088d0a
--- /dev/null
+++ b/modules/by-name/nv/nvim/plgs/treesitter/default.nix
@@ -0,0 +1,63 @@
+{
+  config,
+  pkgs,
+  lib,
+  ...
+}: let
+  cfg = config.soispha.programs.nvim;
+in {
+  home-manager.users.soispha.  programs.nixvim = lib.mkIf cfg.enable {
+    plugins.treesitter = {
+      enable = true;
+
+      # NOTE: These are required to build grammars, but I already use the nix grammars <2024-07-13>
+      gccPackage = null;
+      nodejsPackage = null;
+      treesitterPackage = null;
+
+      # inject nixvim specific highlighting (eg in extraConfigLua).
+      nixvimInjections = true;
+
+      nixGrammars = true;
+      grammarPackages =
+        # Append the `tree-sitter-yts` grammar to all the other grammars.
+        # TODO: Find a better way to do this. <2024-11-08>
+        config.home-manager.users.soispha.programs.nixvim.plugins.treesitter.package.passthru.allGrammars
+        ++ [pkgs.tree-sitter-yts];
+
+      settings = {
+        auto_install = false;
+        ensureInstalled = "all";
+        indent.enable = true;
+        disabledLanguages = [];
+
+        highlight = {
+          enable = true;
+          disable = [];
+
+          #  Setting this to true will run `:h syntax` and tree-sitter at the same time.
+          #  Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
+          #  Using this option may slow down your editor; and you may see some duplicate highlights.
+          #  Instead of true it can also be a list of languages
+          additionalVimRegexHighlighting = ["latex"];
+        };
+
+        incrementalSelection = {
+          enable = true;
+          keymaps = {
+            # TODO: include these in the which-key description
+            initSelection = "gnn"; #  set to `false` to disable one of the mappings
+            nodeIncremental = "grn";
+            scopeIncremental = "grc";
+            nodeDecremental = "grm";
+          };
+        };
+      };
+    };
+    extraFiles = {
+      "queries/yts/highlights.scm".text = ''
+        ${lib.strings.fileContents "${pkgs.tree-sitter-yts}/queries/highlights.scm"}
+      '';
+    };
+  };
+}