mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2024-12-21 17:59:48 +01:00
plugins/treesitter: allow user to toggle default grammars
This commit is contained in:
parent
5e08ed42e7
commit
5e12c2315a
2 changed files with 36 additions and 12 deletions
|
@ -5,8 +5,9 @@
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.lists) optional;
|
inherit (lib.lists) optional optionals;
|
||||||
inherit (lib.trivial) boolToString;
|
inherit (lib.trivial) boolToString;
|
||||||
|
inherit (lib.nvim.lists) listContainsValues;
|
||||||
inherit (lib.nvim.binds) mkSetBinding addDescriptionsToMappings;
|
inherit (lib.nvim.binds) mkSetBinding addDescriptionsToMappings;
|
||||||
inherit (lib.nvim.lua) toLuaObject;
|
inherit (lib.nvim.lua) toLuaObject;
|
||||||
inherit (lib.nvim.dag) entryBefore entryAnywhere;
|
inherit (lib.nvim.dag) entryBefore entryAnywhere;
|
||||||
|
@ -23,6 +24,7 @@ in {
|
||||||
startPlugins = ["nvim-treesitter"] ++ optional usingNvimCmp "cmp-treesitter";
|
startPlugins = ["nvim-treesitter"] ++ optional usingNvimCmp "cmp-treesitter";
|
||||||
|
|
||||||
autocomplete.sources = {"treesitter" = "[Treesitter]";};
|
autocomplete.sources = {"treesitter" = "[Treesitter]";};
|
||||||
|
treesitter.grammars = optionals cfg.addDefaultGrammars cfg.defaultGrammars;
|
||||||
|
|
||||||
maps = {
|
maps = {
|
||||||
# HACK: Using mkSetLuaBinding and putting the lua code does not work for some reason: It just selects the whole file.
|
# HACK: Using mkSetLuaBinding and putting the lua code does not work for some reason: It just selects the whole file.
|
||||||
|
@ -35,6 +37,7 @@ in {
|
||||||
(mkSetBinding mappings.incrementalSelection.decrementByNode ":lua require('nvim-treesitter.incremental_selection').node_decremental()<CR>")
|
(mkSetBinding mappings.incrementalSelection.decrementByNode ":lua require('nvim-treesitter.incremental_selection').node_decremental()<CR>")
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# For some reason treesitter highlighting does not work on start if this is set before syntax on
|
# For some reason treesitter highlighting does not work on start if this is set before syntax on
|
||||||
configRC.treesitter-fold = mkIf cfg.fold (entryBefore ["basic"] ''
|
configRC.treesitter-fold = mkIf cfg.fold (entryBefore ["basic"] ''
|
||||||
set foldmethod=expr
|
set foldmethod=expr
|
||||||
|
@ -43,7 +46,7 @@ in {
|
||||||
'');
|
'');
|
||||||
|
|
||||||
luaConfigRC.treesitter = entryAnywhere ''
|
luaConfigRC.treesitter = entryAnywhere ''
|
||||||
require'nvim-treesitter.configs'.setup {
|
require('nvim-treesitter.configs').setup {
|
||||||
-- Disable imperative treesitter options that would attempt to fetch
|
-- Disable imperative treesitter options that would attempt to fetch
|
||||||
-- grammars into the read-only Nix store. To add additional grammars here
|
-- grammars into the read-only Nix store. To add additional grammars here
|
||||||
-- you must use the `config.vim.treesitter.grammars` option.
|
-- you must use the `config.vim.treesitter.grammars` option.
|
||||||
|
@ -51,13 +54,23 @@ in {
|
||||||
sync_install = false,
|
sync_install = false,
|
||||||
ensure_installed = {},
|
ensure_installed = {},
|
||||||
|
|
||||||
|
-- Indentation module for Treesitter
|
||||||
|
indent = {
|
||||||
|
enable = true,
|
||||||
|
disable = {},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Highlight module for Treesitter
|
||||||
highlight = {
|
highlight = {
|
||||||
enable = ${boolToString cfg.highlight.enable},
|
enable = ${boolToString cfg.highlight.enable},
|
||||||
disable = ${toLuaObject cfg.highlight.disable},
|
disable = ${toLuaObject cfg.highlight.disable},
|
||||||
|
additional_vim_regex_highlighting = false,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- Indentation module for Treesitter
|
||||||
incremental_selection = {
|
incremental_selection = {
|
||||||
enable = true,
|
enable = true,
|
||||||
|
disable = {},
|
||||||
keymaps = {
|
keymaps = {
|
||||||
init_selection = false,
|
init_selection = false,
|
||||||
node_incremental = false,
|
node_incremental = false,
|
||||||
|
|
|
@ -4,11 +4,9 @@
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.options) mkOption mkEnableOption literalMD;
|
inherit (lib.options) mkOption mkEnableOption literalMD;
|
||||||
|
inherit (lib.types) listOf package str either bool;
|
||||||
inherit (lib.nvim.binds) mkMappingOption;
|
inherit (lib.nvim.binds) mkMappingOption;
|
||||||
inherit (lib.types) listOf package str either;
|
inherit (lib.nvim.types) luaInline mkGrammarOption;
|
||||||
inherit (lib.nvim.types) luaInline;
|
|
||||||
|
|
||||||
inherit (pkgs.vimPlugins.nvim-treesitter) builtGrammars;
|
|
||||||
in {
|
in {
|
||||||
options.vim.treesitter = {
|
options.vim.treesitter = {
|
||||||
enable = mkEnableOption "treesitter, also enabled automatically through language options";
|
enable = mkEnableOption "treesitter, also enabled automatically through language options";
|
||||||
|
@ -37,7 +35,7 @@ in {
|
||||||
highlight = {
|
highlight = {
|
||||||
enable = mkEnableOption "highlighting with treesitter";
|
enable = mkEnableOption "highlighting with treesitter";
|
||||||
disable = mkOption {
|
disable = mkOption {
|
||||||
type = either (luaInline (listOf str));
|
type = either (listOf str) luaInline;
|
||||||
default = [];
|
default = [];
|
||||||
example = literalMD ''
|
example = literalMD ''
|
||||||
```lua
|
```lua
|
||||||
|
@ -69,20 +67,33 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
addDefaultGrammars = mkOption {
|
||||||
|
type = bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to add the default grammars to the list of grammars
|
||||||
|
to install.
|
||||||
|
This option is only relevant if treesitter has been enabled.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
defaultGrammars = mkOption {
|
defaultGrammars = mkOption {
|
||||||
internal = true;
|
internal = true;
|
||||||
readOnly = true;
|
readOnly = true;
|
||||||
type = listOf package;
|
type = listOf package;
|
||||||
default = with builtGrammars; [c lua vim vimdoc query];
|
default = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [c lua vim vimdoc query];
|
||||||
description = ''
|
description = ''
|
||||||
A list of treesitter grammars that will be installed by default
|
A list of treesitter grammars that will be installed by default
|
||||||
if treesitter has been enabled.
|
if treesitter has been enabled and {option}`vim.treeesitter.addDefaultGrammars`
|
||||||
|
has been set to true.
|
||||||
|
|
||||||
::: {.warning}
|
::: {.note}
|
||||||
Regardless of which language module options you enable, Neovim
|
Regardless of which language module options you enable, Neovim
|
||||||
depends on those grammars to be enabled while treesitter is enabled.
|
depends on those grammars to be enabled while treesitter is enabled.
|
||||||
This list cannot be modified, but its contents will only be appended
|
|
||||||
if the list of grammars does not contain the required grammars.
|
This list cannot be modified, but if you would like to bring your own
|
||||||
|
parsers instead of those provided here, you can set `addDefaultGrammars`
|
||||||
|
to false
|
||||||
:::
|
:::
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue