diff --git a/plugins/languages/treesitter.nix b/plugins/languages/treesitter.nix index 13240d31..0e4ef628 100644 --- a/plugins/languages/treesitter.nix +++ b/plugins/languages/treesitter.nix @@ -15,43 +15,45 @@ in description = "Install grammars with Nix (beta)"; }; ensureInstalled = mkOption { - type = with types; oneOf [ (enum ["all"]) (listOf str) ]; + type = with types; oneOf [ (enum [ "all" ]) (listOf str) ]; default = "all"; description = "Either \"all\" or a list of languages"; }; ignoreInstall = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; description = "List of parsers to ignore installing (for \"all\")"; }; disabledLanguages = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; description = "A list of languages to disable"; }; customCaptures = mkOption { type = types.attrsOf types.str; - default = {}; + default = { }; description = "Custom capture group highlighting"; }; - incrementalSelection = let - keymap = default: mkOption { - type = types.str; - inherit default; + incrementalSelection = + let + keymap = default: mkOption { + type = types.str; + inherit default; + }; + in + { + enable = mkEnableOption "Incremental selection based on the named nodes from the grammar"; + keymaps = { + initSelection = keymap "gnn"; + nodeIncremental = keymap "grn"; + scopeIncremental = keymap "grc"; + nodeDecremental = keymap "grm"; + }; }; - in { - enable = mkEnableOption "Incremental selection based on the named nodes from the grammar"; - keymaps = { - initSelection = keymap "gnn"; - nodeIncremental = keymap "grn"; - scopeIncremental = keymap "grc"; - nodeDecremental = keymap "grm"; - }; - }; indent = mkEnableOption "Enable tree-sitter based indentation"; @@ -59,48 +61,52 @@ in }; }; - config = let - tsOptions = { - highlight = { - enable = cfg.enable; - disable = if (cfg.disabledLanguages != []) then cfg.disabledLanguages else null; + config = + let + tsOptions = { + highlight = { + enable = cfg.enable; + disable = if (cfg.disabledLanguages != [ ]) then cfg.disabledLanguages else null; - custom_captures = if (cfg.customCaptures != {}) then cfg.customCaptures else null; - }; - - incremental_selection = if cfg.incrementalSelection.enable then { - enable = true; - keymaps = { - init_selection = cfg.incrementalSelection.keymaps.initSelection; - node_incremental = cfg.incrementalSelection.keymaps.nodeIncremental; - scope_incremental = cfg.incrementalSelection.keymaps.scopeIncremental; - node_decremental = cfg.incrementalSelection.keymaps.nodeDecremental; + custom_captures = if (cfg.customCaptures != { }) then cfg.customCaptures else null; }; - } else null; - indent = if cfg.indent then { - enable = true; - } else null; + incremental_selection = + if cfg.incrementalSelection.enable then { + enable = true; + keymaps = { + init_selection = cfg.incrementalSelection.keymaps.initSelection; + node_incremental = cfg.incrementalSelection.keymaps.nodeIncremental; + scope_incremental = cfg.incrementalSelection.keymaps.scopeIncremental; + node_decremental = cfg.incrementalSelection.keymaps.nodeDecremental; + }; + } else null; - ensure_installed = cfg.ensureInstalled; - ignore_install = cfg.ignoreInstall; - }; - in mkIf cfg.enable { - programs.nixvim = { - extraConfigLua = '' - require('nvim-treesitter.configs').setup(${helpers.toLuaObject tsOptions}) - ''; + indent = + if cfg.indent then { + enable = true; + } else null; - extraPlugins = with pkgs; if cfg.nixGrammars then - [ (vimPlugins.nvim-treesitter.withPlugins(_: tree-sitter.allGrammars)) ] - else [ vimPlugins.nvim-treesitter ]; - extraPackages = [ pkgs.tree-sitter pkgs.nodejs ]; + ensure_installed = if cfg.nixGrammars then [ ] else cfg.ensureInstalled; + ignore_install = cfg.ignoreInstall; + }; + in + mkIf cfg.enable { + programs.nixvim = { + extraConfigLua = '' + require('nvim-treesitter.configs').setup(${helpers.toLuaObject tsOptions}) + ''; - options = mkIf cfg.folding { - foldmethod = "expr"; - foldexpr = "nvim_treesitter#foldexpr()"; + extraPlugins = with pkgs; if cfg.nixGrammars then + [ (vimPlugins.nvim-treesitter.withPlugins (_: tree-sitter.allGrammars)) ] + else [ vimPlugins.nvim-treesitter ]; + extraPackages = [ pkgs.tree-sitter pkgs.nodejs ]; + + options = mkIf cfg.folding { + foldmethod = "expr"; + foldexpr = "nvim_treesitter#foldexpr()"; + }; }; }; - }; }