diff --git a/configs/nixvim/trovebelt/default.nix b/configs/nixvim/trovebelt/default.nix index 7ff06336..fcc60e5f 100644 --- a/configs/nixvim/trovebelt/default.nix +++ b/configs/nixvim/trovebelt/default.nix @@ -6,6 +6,7 @@ config = { nixvimConfigs.trovebelt.setups = { lsp.enable = true; + treesitter.enable = true; ui.enable = true; }; diff --git a/configs/nixvim/trovebelt/modules/default.nix b/configs/nixvim/trovebelt/modules/default.nix index e2cf1cf2..654ed43e 100644 --- a/configs/nixvim/trovebelt/modules/default.nix +++ b/configs/nixvim/trovebelt/modules/default.nix @@ -1,6 +1,7 @@ { imports = [ ./setups/lsp.nix + ./setups/treesitter.nix ./setups/ui.nix ]; } diff --git a/configs/nixvim/trovebelt/modules/setups/treesitter.nix b/configs/nixvim/trovebelt/modules/setups/treesitter.nix new file mode 100644 index 00000000..bfe2dcae --- /dev/null +++ b/configs/nixvim/trovebelt/modules/setups/treesitter.nix @@ -0,0 +1,45 @@ +{ 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; + ensureInstalled = lib.mkDefault "all"; + nixvimInjections = true; + + # Enable all of its useful features. + folding = true; + indent = true; + incrementalSelection.enable = true; + }; + + # Enable some more context for me. + plugins.treesitter-context = { + enable = true; + lineNumbers = true; + maxLines = 7; + mode = "cursor"; + separator = "*"; + }; + + # Some niceties for refactoring. + plugins.treesitter-refactor = { + enable = true; + highlightCurrentScope.enable = true; + highlightDefinitions.enable = true; + navigation.enable = true; + smartRename.enable = true; + }; + }; +}