about summary refs log tree commit diff stats
path: root/modules/home/conf/nvim/plgs/treesitter/default.nix
blob: 656b4ce3e3af2fa4c06687beb651d338680864a5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
{
  osConfig,
  config,
  pkgs,
  lib,
  ...
}: {
  programs.nixvim = {
    plugins.treesitter = {
      enable = true;

      ensureInstalled = "all";
      indent = true;

      # inject nixvim specific highlighting (eg in extraConfigLua).
      nixvimInjections = true;

      grammarPackages =
        config.programs.nixvim.plugins.treesitter.package.passthru.allGrammars
        ++ [pkgs.yts-grammar];

      disabledLanguages = [];

      /*
      # TODO: this is not supported by the NixVim module, NixNeovim supports this though..
      highlight = {
        #  `false` will disable the whole extension
        enable = true;
        disable = ["latex"];

        #  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 = [""];
      };
      */

      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" = ''
        ${lib.strings.fileContents "${pkgs.yts-grammar}/queries/highlights.scm"}
      '';
    };
  };
}