dot

NixOS dotfiles
git clone https://git.echoz.io/dot.git
Log | Files | Refs

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 }