nix-community.nixvim/plugins/languages/treesitter-context.nix
2023-02-20 10:42:13 +00:00

60 lines
1.5 KiB
Nix

{
pkgs,
lib,
config,
...
}:
with lib; let
helpers = import ../helpers.nix {inherit lib;};
in {
options.plugins.treesitter-context = {
enable = mkEnableOption "nvim-treesitter-context";
package = helpers.mkPackageOption "treesitter-context" pkgs.vimPlugins.nvim-treesitter-context;
maxLines = mkOption {
type = types.nullOr types.ints.positive;
default = null;
description = "How many lines the window should span. Null means no limit";
};
trimScope = mkOption {
type = types.enum ["outer" "inner"];
default = "outer";
description = "Which context lines to discard if `max_lines` is exceeded";
};
maxWindowHeight = mkOption {
type = types.nullOr types.ints.positive;
default = null;
description = "Minimum editor window height to enable context";
};
patterns = mkOption {
type = types.attrsOf (types.listOf types.str);
default = {};
description = ''
Patterns to use for context delimitation. The 'default' key matches all filetypes
'';
};
exactPatterns = mkOption {
type = types.attrsOf types.bool;
default = {};
description = "Treat the coresponding entry in patterns as an exact match";
};
};
config = let
cfg = config.plugins.treesitter-context;
in
mkIf cfg.enable {
extraPlugins = [cfg.package];
plugins.treesitter.moduleConfig.context = {
max_lines = cfg.maxLines;
trim_scope = cfg.trimScope;
min_window_height = cfg.maxWindowHeight;
};
};
}