nix-community.nixvim/plugins/languages/treesitter-context.nix
2023-01-22 03:32:08 +00:00

62 lines
1.6 KiB
Nix

{ pkgs
, lib
, config
, ...
}:
with lib; {
options.plugins.treesitter-context = {
enable = mkEnableOption "nvim-treesitter-context";
package = mkOption {
type = types.package;
default = pkgs.vimPlugins.nvim-treesitter-context;
description = "Plugin to use for 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;
};
};
}