From 83a8308ed5319f5712fd1bad803537da082802a3 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Sun, 30 Jul 2023 13:16:39 +0300 Subject: [PATCH] dev: rewrite view section of nvimtree config --- modules/filetree/nvimtree/config.nix | 168 +++++++++++++------------ modules/filetree/nvimtree/nvimtree.nix | 83 ++++++------ 2 files changed, 131 insertions(+), 120 deletions(-) diff --git a/modules/filetree/nvimtree/config.nix b/modules/filetree/nvimtree/config.nix index 0e483b80..8deee91b 100644 --- a/modules/filetree/nvimtree/config.nix +++ b/modules/filetree/nvimtree/config.nix @@ -70,95 +70,101 @@ 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_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}, + 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}", }, - update_focused_file = { - enable = ${boolToString cfg.updateFocusedFile.enable}, - update_root = ${boolToString cfg.updateFocusedFile.updateRoot}, - ignore_list = ${nvim.lua.listToLuaTable cfg.updateFocusedFile.ignoreList}, + severity = { + min = "vim.diagnostic.severity.${cfg.diagnostics.severity.min}", + max = "vim.diagnostic.severity.${cfg.diagnostics.severity.max}", }, + }, - system_open = { - cmd = "${cfg.systemOpen.cmd}", - args = ${nvim.lua.listToLuaTable cfg.systemOpen.args}, - }, + 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}, + }, - 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}", - }, + modified = { + enable = ${boolToString cfg.modified.enable}, + show_on_dirs = ${boolToString cfg.modified.showOnDirs}, + show_on_open_dirs = ${boolToString cfg.modified.showOnOpenDirs}, + }, - severity = { - min = "vim.diagnostic.severity.${cfg.diagnostics.severity.min}", - max = "vim.diagnostic.severity.${cfg.diagnostics.severity.max}", + 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 = { + 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}, }, }, - - 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}, - }, - }, - renderer = { add_trailing = ${boolToString cfg.renderer.addTrailing}, group_empty = ${boolToString cfg.renderer.groupEmpty}, @@ -173,6 +179,9 @@ in { inline_arrows = ${boolToString cfg.renderer.indentMarkers.inlineArrows}, 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}, @@ -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 = { diff --git a/modules/filetree/nvimtree/nvimtree.nix b/modules/filetree/nvimtree/nvimtree.nix index a9c8ae19..5772bace 100644 --- a/modules/filetree/nvimtree/nvimtree.nix +++ b/modules/filetree/nvimtree/nvimtree.nix @@ -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; }; }; };