dev: rewrite view section of nvimtree config

This commit is contained in:
raf 2023-07-30 13:16:39 +03:00
parent bb6b138027
commit 83a8308ed5
No known key found for this signature in database
GPG key ID: 02D1DD3FA08B6B29
2 changed files with 131 additions and 120 deletions

View file

@ -70,94 +70,100 @@ in {
''
}
require'nvim-tree'.setup({
disable_netrw = ${boolToString cfg.disableNetrw},
hijack_netrw = ${boolToString cfg.hijackNetrw},
auto_reload_on_write = ${boolToString cfg.autoreloadOnWrite},
require'nvim-tree'.setup({
disable_netrw = ${boolToString cfg.disableNetrw},
hijack_netrw = ${boolToString cfg.hijackNetrw},
auto_reload_on_write = ${boolToString cfg.autoreloadOnWrite},
sort = {
sorter = "${cfg.sort.sorter}",
folders_first = ${boolToString cfg.sort.foldersFirst},
sort = {
sorter = "${cfg.sort.sorter}",
folders_first = ${boolToString cfg.sort.foldersFirst},
},
hijack_unnamed_buffer_when_opening = ${boolToString cfg.hijackUnnamedBufferWhenOpening},
hijack_cursor = ${boolToString cfg.hijackCursor},
root_dirs = ${nvim.lua.listToLuaTable cfg.rootDirs},
prefer_startup_root = ${boolToString cfg.preferStartupRoot},
sync_root_with_cwd = ${boolToString cfg.syncRootWithCwd},
reload_on_bufenter = ${boolToString cfg.reloadOnBufEnter},
respect_buf_cwd = ${boolToString cfg.respectBufCwd},
hijack_directories = {
enable = ${boolToString cfg.hijackDirectories.enable},
auto_open = ${boolToString cfg.hijackDirectories.autoOpen},
},
update_focused_file = {
enable = ${boolToString cfg.updateFocusedFile.enable},
update_root = ${boolToString cfg.updateFocusedFile.updateRoot},
ignore_list = ${nvim.lua.listToLuaTable cfg.updateFocusedFile.ignoreList},
},
system_open = {
cmd = "${cfg.systemOpen.cmd}",
args = ${nvim.lua.listToLuaTable cfg.systemOpen.args},
},
diagnostics = {
enable = ${boolToString cfg.diagnostics.enable},
icons = {
hint = "${cfg.diagnostics.icons.hint}",
info = "${cfg.diagnostics.icons.info}",
warning = "${cfg.diagnostics.icons.warning}",
error = "${cfg.diagnostics.icons.error}",
},
hijack_unnamed_buffer_when_opening = ${boolToString cfg.hijackUnnamedBufferWhenOpening},
hijack_cursor = ${boolToString cfg.hijackCursor},
root_dirs = ${nvim.lua.listToLuaTable cfg.rootDirs},
prefer_startup_root = ${boolToString cfg.preferStartupRoot},
sync_root_with_cwd = ${boolToString cfg.syncRootWithCwd},
reload_on_bufenter = ${boolToString cfg.reloadOnBufEnter},
respect_buf_cwd = ${boolToString cfg.respectBufCwd},
hijack_directories = {
enable = ${boolToString cfg.hijackDirectories.enable},
auto_open = ${boolToString cfg.hijackDirectories.autoOpen},
severity = {
min = "vim.diagnostic.severity.${cfg.diagnostics.severity.min}",
max = "vim.diagnostic.severity.${cfg.diagnostics.severity.max}",
},
},
update_focused_file = {
enable = ${boolToString cfg.updateFocusedFile.enable},
update_root = ${boolToString cfg.updateFocusedFile.updateRoot},
ignore_list = ${nvim.lua.listToLuaTable cfg.updateFocusedFile.ignoreList},
},
git = {
enable = ${boolToString cfg.git.enable},
show_on_dirs = ${boolToString cfg.git.showOnDirs},
show_on_open_dirs = ${boolToString cfg.git.showOnOpenDirs},
disable_for_dirs = ${nvim.lua.listToLuaTable cfg.git.disableForDirs},
timeout = ${toString cfg.git.timeOut},
},
system_open = {
cmd = "${cfg.systemOpen.cmd}",
args = ${nvim.lua.listToLuaTable cfg.systemOpen.args},
},
modified = {
enable = ${boolToString cfg.modified.enable},
show_on_dirs = ${boolToString cfg.modified.showOnDirs},
show_on_open_dirs = ${boolToString cfg.modified.showOnOpenDirs},
},
diagnostics = {
enable = ${boolToString cfg.diagnostics.enable},
icons = {
hint = "${cfg.diagnostics.icons.hint}",
info = "${cfg.diagnostics.icons.info}",
warning = "${cfg.diagnostics.icons.warning}",
error = "${cfg.diagnostics.icons.error}",
},
filesystem_watchers = {
enable = ${boolToString cfg.filesystemWatchers.enable},
debounce_delay = ${toString cfg.filesystemWatchers.debounceDelay},
ignore_dirs = ${nvim.lua.listToLuaTable cfg.filesystemWatchers.ignoreDirs},
},
severity = {
min = "vim.diagnostic.severity.${cfg.diagnostics.severity.min}",
max = "vim.diagnostic.severity.${cfg.diagnostics.severity.max}",
},
},
git = {
enable = ${boolToString cfg.git.enable},
show_on_dirs = ${boolToString cfg.git.showOnDirs},
show_on_open_dirs = ${boolToString cfg.git.showOnOpenDirs},
disable_for_dirs = ${nvim.lua.listToLuaTable cfg.git.disableForDirs},
timeout = ${toString cfg.git.timeOut},
},
modified = {
enable = ${boolToString cfg.modified.enable},
show_on_dirs = ${boolToString cfg.modified.showOnDirs},
show_on_open_dirs = ${boolToString cfg.modified.showOnOpenDirs},
},
filesystem_watchers = {
enable = ${boolToString cfg.filesystemWatchers.enable},
debounce_delay = ${toString cfg.filesystemWatchers.debounceDelay},
ignore_dirs = ${nvim.lua.listToLuaTable cfg.filesystemWatchers.ignoreDirs},
},
select_prompts = ${boolToString cfg.selectPrompts},
view = {
width = ${nvim.lua.expToLua cfg.view.width},
centralize_selection = ${boolToString cfg.view.centralizeSelection},
cursorline = ${boolToString cfg.view.cursorline},
debounce_delay = ${toString cfg.view.debounceDelay},
side = "${cfg.view.side}",
preserve_window_proportions = ${boolToString cfg.view.preserveWindowProportions},
number = ${boolToString cfg.view.number},
relativenumber = ${boolToString cfg.view.relativeNumber},
signcolumn = ${cfg.view.signcolumn},
float = {
enable = ${boolToString cfg.view.float.enable},
quit_on_focus_loss = ${boolToString cfg.view.float.quitOnFocusLoss},
open_win_config = ${nvim.lua.expToLua cfg.view.float.openWinConfig},
select_prompts = ${boolToString cfg.selectPrompts},
view = {
centralize_selection = ${boolToString cfg.view.centralizeSelection},
cursorline = ${boolToString cfg.view.cursorline},
debounce_delay = ${toString cfg.view.debounceDelay},
width = ${nvim.lua.expToLua cfg.view.width},
side = "${cfg.view.side}",
preserve_window_proportions = ${boolToString cfg.view.preserveWindowProportions},
number = ${boolToString cfg.view.number},
relativenumber = ${boolToString cfg.view.relativenumber},
signcolumn = "${cfg.view.signcolumn}",
float = {
enable = ${boolToString cfg.view.float.enable},
quit_on_focus_loss = ${boolToString cfg.view.float.quitOnFocusLoss},
open_win_config = {
relative = "${cfg.view.float.openWinConfig.relative}",
border = "${cfg.view.float.openWinConfig.border}",
width = ${toString cfg.view.float.openWinConfig.width},
height = ${toString cfg.view.float.openWinConfig.height},
row = ${toString cfg.view.float.openWinConfig.row},
col = ${toString cfg.view.float.openWinConfig.col},
},
},
},
renderer = {
add_trailing = ${boolToString cfg.renderer.addTrailing},
@ -174,6 +180,9 @@ in {
icons = ${nvim.lua.expToLua cfg.renderer.indentMarkers.icons},
},
special_files = ${nvim.lua.listToLuaTable cfg.renderer.specialFiles},
symlink_destination = ${boolToString cfg.renderer.symlinkDestination},
icons = {
webdev_colors = ${boolToString cfg.renderer.icons.webdevColors},
git_placement = "${cfg.renderer.icons.gitPlacement}",
@ -216,9 +225,8 @@ in {
},
},
},
special_files = ${nvim.lua.listToLuaTable cfg.renderer.specialFiles},
symlink_destination = ${boolToString cfg.renderer.symlinkDestination},
},
filters = {
git_ignored = ${boolToString cfg.filters.gitIgnored},
dotfiles = ${boolToString cfg.filters.dotfiles},
@ -226,9 +234,11 @@ in {
no_buffer = ${boolToString cfg.filters.noBuffer},
exclude = ${nvim.lua.listToLuaTable cfg.filters.exclude},
},
trash = {
cmd = "${cfg.trash.cmd}",
},
actions = {
use_system_clipboard = ${boolToString cfg.actions.useSystemClipboard},
change_dir = {

View file

@ -369,30 +369,38 @@ with builtins; {
view = mkOption {
description = "Window / buffer setup.";
default = {
centralizeSelection = false;
cursorline = false;
debounceDelay = 100;
cursorline = true;
debounceDelay = 15;
width = 30;
side = "left";
preserveWindowProportions = false;
number = false;
relativeNumber = false;
relativenumber = false;
signcolumn = "yes";
float = {
enable = false;
quitOnFocusLoss = true;
openWinConfig = {
relative = "editor";
border = "rounded";
width = 30;
height = 30;
row = 1;
col = 1;
};
};
};
type = types.submodule {
options = {
centralizeSelection = mkOption {
description = "If true, reposition the view so that the current node is initially centralized when entering nvim-tree.";
type = types.bool;
description = ''
When entering nvim-tree, reposition the view so that the current node is
initially centralized
'';
};
cursorline = mkOption {
description = "Whether to display the cursor line in NvimTree";
description = "Enable cursorline in nvim-tree window.";
type = types.bool;
};
@ -408,76 +416,69 @@ with builtins; {
description = ''
Width of the window: can be a `%` string, a number representing columns, a
function or a table.
A table indicates that the view should be dynamically sized based on the
longest line (previously `view.adaptive_size`).
A table (an attribute set in our case, see example) indicates that the view should be dynamically sized based on the
longest line.
'';
type = with types; oneOf [int attrs];
example = literalExpression ''
{
min = 30;
max = -1;
padding = 1;
}
'';
};
side = mkOption {
description = "Side of the tree.";
type = types.enum ["left" "right"];
default = "left";
description = "Side the tree will appear on left or right";
};
preserveWindowProportions = mkOption {
type = types.bool;
default = false;
description = ''
Preserves window proportions when opening a file.
If `false`, the height and width of windows other than nvim-tree will be equalized.
'';
type = types.bool;
};
number = mkOption {
type = types.bool;
default = false;
description = "Print the line number in front of each line.";
type = types.bool;
};
relativeNumber = mkOption {
type = types.bool;
default = false;
relativenumber = mkOption {
description = ''
Show the line number relative to the line with the cursor in front of each line.
If the option `view.number` is also `true`, the number on the cursor line
will be the line number instead of `0`.
'';
type = types.bool;
};
signcolumn = mkOption {
description = " Show diagnostic sign column. Value can be `" yes "`, `" auto "`, `" no "`.";
type = types.enum ["yes" "auto" "no"];
default = "yes";
description = "Show diagnostic sign column.";
};
float = mkOption {
description = "Configuration options for floating window";
default = {
quitOnFocusLoss = true;
openWinConfig = {
relative = "editor";
border = "single";
width = 30;
height = 30;
row = 1;
col = 1;
};
};
description = "Configuration options for floating window.";
type = types.submodule {
options = {
enable = mkEnableOption "Tree window will be floating.";
enable = mkOption {
description = "If true, tree window will be floating.";
type = types.bool;
};
quitOnFocusLoss = mkOption {
type = types.bool;
description = "Close the floating tree window when it loses focus.";
type = types.bool;
};
openWinConfig = mkOption {
type = with types; oneOf [str attrs];
description = "Floating window configuration.";
description = "Floating window config. See `:h nvim_open_win()` for more details.";
type = types.attrs;
};
};
};