nixos/pkgsets/nvim/treesitter.nix

69 lines
1.9 KiB
Nix

{
lib,
config,
pkgs,
...
}:
lib.mkIf (lib.elem "nvim::treesitter" config.machine.pkgs) {
programs.nvim-lazy.lazyPlugins =
let
org-grammar = pkgs.tree-sitter.buildGrammar {
language = "org";
version = "1.0";
src = pkgs.fetchFromGitHub {
owner = "nvim-orgmode";
repo = "tree-sitter-org";
rev = "436c2dec440e6ad40be98f3b712537bbb08bef0b";
hash = "sha256-k/i+7/K6puXg554BWSLHIDlOXElUovOwOEe5i1Q95L8=";
};
};
# all grammars except replace org-mode
treesitter = pkgs.vimPlugins.nvim-treesitter.withPlugins (
_:
(lib.filter (grammar: grammar.pname != "org-grammar") pkgs.vimPlugins.nvim-treesitter.allGrammars)
++ [ org-grammar ]
);
#treesitter = pkgs.vimPlugins.nvim-treesitter.withAllGrammars;
grammars = pkgs.symlinkJoin {
name = "treesitter-parsers";
paths = treesitter.dependencies;
};
in
[
{
lazy = false;
dir = treesitter;
event = [
"BufReadPost"
"BufWritePost"
"BufNewFile"
"VeryLazy"
];
config = # lua
''
function()
vim.opt.rtp:prepend("${grammars}")
require("nvim-treesitter.configs").setup({
auto_install = false,
highlight = {
enable = true,
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = "gnn", -- set to `false` to disable one of the mappings
node_incremental = "grn",
scope_incremental = "grc",
node_decremental = "grm",
},
},
indent = {
enable = true
}
})
end
'';
}
];
}