{ config, pkgs, lib, ... }: { programs.nixvim = { 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 = config.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"} ''; }; }; }