neovim-flake/modules/plugins/treesitter/ts-context/context.nix

94 lines
2.5 KiB
Nix

{lib, ...}: let
inherit (lib.options) mkOption mkEnableOption;
inherit (lib.types) int bool str nullOr enum;
inherit (lib.nvim.types) mkPluginSetupOption;
inherit (lib.nvim.config) batchRenameOptions;
migrationTable = {
maxLines = "max_lines";
minWindowHeight = "min_window_height";
lineNumbers = "line_numbers";
multilineThreshold = "multiline_threshold";
trimScope = "trim_scope";
mode = "mode";
separator = "separator";
zindex = "z_index";
};
renamedSetupOpts =
batchRenameOptions
["vim" "treesitter" "context"]
["vim" "treesitter" "context" "setupOpts"]
migrationTable;
in {
imports = renamedSetupOpts;
options.vim.treesitter.context = {
enable = mkEnableOption "context of current buffer contents [nvim-treesitter-context] ";
setupOpts = mkPluginSetupOption "treesitter-context" {
max_lines = mkOption {
type = int;
default = 0;
description = ''
How many lines the window should span.
Values >= 0 mean there will be no limit.
'';
};
min_window_height = mkOption {
type = int;
default = 0;
description = ''
Minimum editor window height to enable context.
Values >= 0 mean there will be no limit.
'';
};
line_numbers = mkOption {
type = bool;
default = true;
description = "Whether to display line numbers in current context";
};
multiline_threshold = mkOption {
type = int;
default = 20;
description = "Maximum number of lines to collapse for a single context line.";
};
trim_scope = mkOption {
type = enum ["inner" "outer"];
default = "outer";
description = ''
Which context lines to discard if
[](#opt-vim.treesitter.context.setupOpts.max_lines) is exceeded.
'';
};
mode = mkOption {
type = enum ["cursor" "topline"];
default = "cursor";
description = "Line used to calculate context.";
};
separator = mkOption {
type = nullOr str;
default = "-";
description = ''
Separator between context and content. This option should
be a single character string, like '-'.
When separator is set, the context will only show up when
there are at least 2 lines above cursorline.
'';
};
zindex = mkOption {
type = int;
default = 20;
description = "The Z-index of the context window.";
};
};
};
}