nixos-config/configs/nixvim/trovebelt/modules/setups/treesitter.nix

50 lines
1.2 KiB
Nix

{ config, lib, ... }:
let
nixvimCfg = config.nixvimConfigs.trovebelt;
cfg = nixvimCfg.setups.treesitter;
in
{
options.nixvimConfigs.trovebelt.setups.treesitter.enable =
lib.mkEnableOption "tree-sitter setup with all parsers installed";
config = lib.mkIf cfg.enable {
plugins.treesitter = {
enable = true;
# Install all of the grammars with Nix. We can easily replace it if we
# want to.
nixGrammars = true;
nixvimInjections = true;
grammarPackages = config.plugins.treesitter.package.allGrammars;
# Enable all of its useful features.
folding = true;
settings = {
indent.enable = true;
incremental_selection.enable = true;
};
};
# Enable some more context for me.
plugins.treesitter-context = {
enable = true;
settings = {
separator = "*";
mode = "cursor";
line_numbers = true;
max_lines = 7;
};
};
# Some niceties for refactoring.
plugins.treesitter-refactor = {
enable = true;
highlightCurrentScope.enable = true;
highlightDefinitions.enable = true;
navigation.enable = true;
smartRename.enable = true;
};
};
}