tree-sitter.nix (1674B)
1 { pkgs, ... }: 2 { 3 programs.neovim.plugins = [ 4 ( 5 (pkgs.vimPlugins.nvim-treesitter.withPlugins ( 6 _: 7 pkgs.vimPlugins.nvim-treesitter.allGrammars 8 ++ [ 9 (pkgs.tree-sitter.buildGrammar rec { 10 language = "d2"; 11 version = "0.7.2"; 12 src = pkgs.fetchFromGitHub { 13 owner = "ravsii"; 14 repo = "tree-sitter-d2"; 15 tag = "v${version}"; 16 hash = "sha256-zx6ud3uh+0Z+cYdP2KkFA27Kb6fW/CSGpC1C4YmCIo0="; 17 }; 18 }) 19 ] 20 )) 21 // { 22 runtimeDeps = [ pkgs.tree-sitter ]; 23 } 24 ) 25 ]; 26 programs.neovim.customPlugins.treesitter-config = { 27 "plugin/tree-sitter-config.lua" = # lua 28 '' 29 require('nvim-treesitter.config').setup({ 30 highlight = { 31 enable = true, 32 disable = {}, 33 }, 34 textobjects = { 35 select = { 36 enable = true, 37 lookahead = true, 38 keymaps = { 39 ["af"] = "@function.outer", 40 ["if"] = "@function.inner", 41 ["ac"] = "@class.outer", 42 ["ic"] = "@class.inner", 43 }, 44 }, 45 }, 46 }) 47 48 49 vim.api.nvim_create_autocmd('FileType', { 50 group = vim.api.nvim_create_augroup('TreeSitterStart', { clear = true }), 51 callback = function(args) 52 local language = vim.treesitter.language.get_lang(vim.bo[args.buf].filetype) 53 if vim.treesitter.language.add(language) then 54 vim.treesitter.start(args.buf, language) 55 end 56 end 57 }) 58 ''; 59 }; 60 }