From 25eed3c2f58e8be2660e0f1aeadfc96ba03683a6 Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Tue, 11 Jun 2024 16:52:12 +0100 Subject: [PATCH] plugins/filetrees: normalize plugin defaults --- plugins/filetrees/chadtree.nix | 155 ++++++++----- plugins/filetrees/neo-tree.nix | 374 ++++++++++++++++---------------- plugins/filetrees/nvim-tree.nix | 103 ++++----- 3 files changed, 338 insertions(+), 294 deletions(-) diff --git a/plugins/filetrees/chadtree.nix b/plugins/filetrees/chadtree.nix index 93524999..ba7657b5 100644 --- a/plugins/filetrees/chadtree.nix +++ b/plugins/filetrees/chadtree.nix @@ -27,11 +27,19 @@ in ''; mimetypes = { - warn = mkListStr ''["audio" "font" "image" "video"]'' '' - Show a warning before opening these datatypes. - ''; + warn = + mkListStr + [ + "audio" + "font" + "image" + "video" + ] + '' + Show a warning before opening these datatypes. + ''; - allowExts = mkListStr ''[".ts"]'' '' + allowExts = mkListStr [ ".ts" ] '' Skip warning for these extensions. ''; }; @@ -58,16 +66,24 @@ in ''; ignore = { - nameExact = mkListStr ''[".DS_Store" ".directory" "thumbs.db" ".git"]'' '' - Files whose name match these exactly will be ignored. - ''; + nameExact = + mkListStr + [ + ".DS_Store" + ".directory" + "thumbs.db" + ".git" + ] + '' + Files whose name match these exactly will be ignored. + ''; - nameGlob = mkListStr "[]" '' + nameGlob = mkListStr [ ] '' Files whose name match these glob patterns will be ignored. ie. `*.py` will match all python files ''; - pathGlob = mkListStr "[]" '' + pathGlob = mkListStr [ ] '' Files whose full path match these glob patterns will be ignored. ''; }; @@ -85,12 +101,19 @@ in Which way does CHADTree open? ''; - sortBy = mkListStr ''["is_folder" "ext" "file_name"]'' '' - CHADTree can sort by the following criterion. - Reorder them if you want a different sorting order. - legal keys: some of - `["is_folder" "ext" "file_name"]` - ''; + sortBy = + mkListStr + [ + "is_folder" + "ext" + "file_name" + ] + '' + CHADTree can sort by the following criterion. + Reorder them if you want a different sorting order. + legal keys: some of + `["is_folder" "ext" "file_name"]` + ''; width = helpers.defaultNullOpts.mkInt 40 '' How big is CHADTree when initially opened? @@ -184,123 +207,141 @@ in keymap = { windowManagement = { - quit = mkListStr ''["q"]'' '' + quit = mkListStr [ "q" ] '' Close CHADTree window, quit if it is the last window. ''; - bigger = mkListStr ''["+" "="]'' '' - Resize CHADTree window bigger. - ''; + bigger = + mkListStr + [ + "+" + "=" + ] + '' + Resize CHADTree window bigger. + ''; - smaller = mkListStr ''["-" "_"]'' '' - Resize CHADTree window smaller. - ''; + smaller = + mkListStr + [ + "-" + "_" + ] + '' + Resize CHADTree window smaller. + ''; - refresh = mkListStr ''[""]'' '' + refresh = mkListStr [ "" ] '' Refresh CHADTree. ''; }; rerooting = { - changeDir = mkListStr ''["b"]'' '' + changeDir = mkListStr [ "b" ] '' Change vim's working directory. ''; - changeFocus = mkListStr ''["c"]'' '' + changeFocus = mkListStr [ "c" ] '' Set CHADTree's root to folder at cursor. Does not change working directory. ''; - changeFocusUp = mkListStr ''["C"]'' '' + changeFocusUp = mkListStr [ "C" ] '' Set CHADTree's root one level up. ''; }; openFileFolder = { - primary = mkListStr ''[""]'' '' + primary = mkListStr [ "" ] '' Open file at cursor. ''; - secondary = mkListStr ''[" <2-leftmouse>"]'' '' + secondary = mkListStr [ " <2-leftmouse>" ] '' Open file at cursor, keep cursor in CHADTree's window. ''; - tertiary = mkListStr ''["" ]'' '' - Open file at cursor in a new tab. - ''; + tertiary = + mkListStr + [ + "" + "" + ] + '' + Open file at cursor in a new tab. + ''; - vSplit = mkListStr ''["w"]'' '' + vSplit = mkListStr [ "w" ] '' Open file at cursor in vertical split. ''; - hSplit = mkListStr ''["W"]'' '' + hSplit = mkListStr [ "W" ] '' Open file at cursor in horizontal split. ''; - openSys = mkListStr ''["o"]'' '' + openSys = mkListStr [ "o" ] '' Open file with GUI tools using `open` or `xdg open`. This will open third party tools such as Finder or KDE Dolphin or GNOME nautilus, etc. Depends on platform and user setup. ''; - collapse = mkListStr ''["o"]'' '' + collapse = mkListStr [ "o" ] '' Collapse all subdirectories for directory at cursor. ''; }; cursor = { - refocus = mkListStr ''["~"]'' '' + refocus = mkListStr [ "~" ] '' Put cursor at the root of CHADTree. ''; - jumpToCurrent = mkListStr ''["J"]'' '' + jumpToCurrent = mkListStr [ "J" ] '' Position cursor in CHADTree at currently open buffer, if the buffer points to a location visible under CHADTree. ''; - stat = mkListStr ''["K"]'' '' + stat = mkListStr [ "K" ] '' Print `ls --long` stat for file under cursor. ''; - copyName = mkListStr ''["y"]'' '' + copyName = mkListStr [ "y" ] '' Copy paths of files under cursor or visual block. ''; - copyBasename = mkListStr ''["Y"]'' '' + copyBasename = mkListStr [ "Y" ] '' Copy names of files under cursor or visual block. ''; - copyRelname = mkListStr ''[""]'' '' + copyRelname = mkListStr [ "" ] '' Copy relative paths of files under cursor or visual block. ''; }; filtering = { - filter = mkListStr ''["f"]'' '' + filter = mkListStr [ "f" ] '' Set a glob pattern to narrow down visible files. ''; - clearFilter = mkListStr ''["F"]'' '' + clearFilter = mkListStr [ "F" ] '' Clear filter. ''; }; bookmarks = { - bookmarkGoto = mkListStr ''["m"]'' '' + bookmarkGoto = mkListStr [ "m" ] '' Goto bookmark `A-Z`. ''; }; selecting = { - select = mkListStr ''["s"]'' '' + select = mkListStr [ "s" ] '' Select files under cursor or visual block. ''; - clearSelection = mkListStr ''["S"]'' '' + clearSelection = mkListStr [ "S" ] '' Clear selection. ''; }; fileOperations = { - new = mkListStr ''["a"]'' '' + new = mkListStr [ "a" ] '' Create new file at location under cursor. Files ending with platform specific path separator will be folders. Intermediary folders are created automatically. @@ -308,7 +349,7 @@ in ie. `uwu/owo/` under unix will create `uwu/` then `owo/` under it. Both are folders. ''; - link = mkListStr ''["A"]'' '' + link = mkListStr [ "A" ] '' Create links at location under cursor from selection. Links are always relative. @@ -316,44 +357,44 @@ in Intermediary folders are created automatically. ''; - rename = mkListStr ''["r"]'' '' + rename = mkListStr [ "r" ] '' Rename file under cursor. ''; - toggleExec = mkListStr ''["X"]'' '' + toggleExec = mkListStr [ "X" ] '' Toggle all the `+x` bits of the selected / highlighted files. Except for directories, where `-x` will prevent reading. ''; - copy = mkListStr ''["p"]'' '' + copy = mkListStr [ "p" ] '' Copy the selected files to location under cursor. ''; - cut = mkListStr ''["x"]'' '' + cut = mkListStr [ "x" ] '' Move the selected files to location under cursor. ''; - delete = mkListStr ''["d"]'' '' + delete = mkListStr [ "d" ] '' Delete the selected files. Items deleted cannot be recovered. ''; - trash = mkListStr ''[t]'' '' + trash = mkListStr [ "t" ] '' Trash the selected files using platform specific `trash` command, if they are available. Items trashed may be recovered. ''; }; toggles = { - toggleHidden = mkListStr ''["."]'' '' + toggleHidden = mkListStr [ "." ] '' Toggle show_hidden on and off. See `chadtree.showHidden` for details. ''; - toggleFollow = mkListStr ''["u"]'' '' + toggleFollow = mkListStr [ "u" ] '' Toggle `follow` on and off. See `chadtree.follow` for details. ''; - toggleVersionControl = mkListStr ''["i"]'' '' + toggleVersionControl = mkListStr [ "i" ] '' Toggle version control integration on and off. ''; }; diff --git a/plugins/filetrees/neo-tree.nix b/plugins/filetrees/neo-tree.nix index 2f3ff070..0d2a314f 100644 --- a/plugins/filetrees/neo-tree.nix +++ b/plugins/filetrees/neo-tree.nix @@ -58,8 +58,12 @@ in package = helpers.mkPluginPackageOption "neo-tree" pkgs.vimPlugins.neo-tree-nvim; sources = - helpers.defaultNullOpts.mkNullable (types.listOf types.str) - ''["filesystem" "buffers" "git_status"]'' + helpers.defaultNullOpts.mkListOf types.str + [ + "filesystem" + "buffers" + "git_status" + ] '' If a user has a sources list it will replace this one. Only sources listed here will be loaded. @@ -122,12 +126,12 @@ in ] "info" ""; logToFile = - helpers.defaultNullOpts.mkNullable (types.either types.bool types.str) "false" + helpers.defaultNullOpts.mkNullable (types.either types.bool types.str) false "use :NeoTreeLogs to show the file"; openFilesInLastWindow = helpers.defaultNullOpts.mkBool true "If `false`, open files in top left window"; - popupBorderStyle = helpers.defaultNullOpts.mkEnum [ + popupBorderStyle = helpers.defaultNullOpts.mkEnumFirstDefault [ "NC" "double" "none" @@ -135,7 +139,7 @@ in "shadow" "single" "solid" - ] "NC" ""; + ] ""; resizeTimerInterval = helpers.defaultNullOpts.mkInt 500 '' In ms, needed for containers to redraw right aligned and faded content. @@ -228,7 +232,7 @@ in helpers.defaultNullOpts.mkNullable types.int null "This will truncate text even if `textTruncToFit = false`"; - padding = helpers.defaultNullOpts.mkNullable (with types; either int (attrsOf int)) "0" '' + padding = helpers.defaultNullOpts.mkNullable (with types; either int (attrsOf int)) 0 '' Defines the global padding of the source selector. It can be an integer or an attrs with keys `left` and `right`. Setting `padding = 2` is exactly the same as `{ left = 2; right = 2; }`. @@ -236,16 +240,23 @@ in Example: `{ left = 2; right = 0; }` ''; - separator = helpers.defaultNullOpts.mkNullable ( - with types; - either str (submodule { - options = { - left = helpers.defaultNullOpts.mkStr "▏" ""; - right = helpers.defaultNullOpts.mkStr "\\" ""; - override = helpers.defaultNullOpts.mkStr null ""; - }; - }) - ) "Can be a string or a table" ''{ left = "▏"; right= "▕"; }''; + separator = + helpers.defaultNullOpts.mkNullable + ( + with types; + either str (submodule { + options = { + left = helpers.defaultNullOpts.mkStr "▏" ""; + right = helpers.defaultNullOpts.mkStr "\\" ""; + override = helpers.defaultNullOpts.mkStr null ""; + }; + }) + ) + { + left = "▏"; + right = "▕"; + } + "Can be a string or a table"; separatorActive = helpers.defaultNullOpts.mkNullable @@ -416,113 +427,105 @@ in }; renderers = { - directory = mkRendererComponentListOption '' - [ - "indent" - "icon" - "current_filter" - { - name = "container"; - content = [ - { - name = "name"; - zindex = 10; - } - { - name = "clipboard"; - zindex = 10; - } - { - name = "diagnostics"; - errors_only = true; - zindex = 20; - align = "right"; - hide_when_expanded = true; - } - { - name = "git_status"; - zindex = 20; - align = "right"; - hide_when_expanded = true; - } - ]; - } - ] - '' "directory renderers"; + directory = mkRendererComponentListOption [ + "indent" + "icon" + "current_filter" + { + name = "container"; + content = [ + { + name = "name"; + zindex = 10; + } + { + name = "clipboard"; + zindex = 10; + } + { + name = "diagnostics"; + errors_only = true; + zindex = 20; + align = "right"; + hide_when_expanded = true; + } + { + name = "git_status"; + zindex = 20; + align = "right"; + hide_when_expanded = true; + } + ]; + } + ] "directory renderers"; - file = mkRendererComponentListOption '' - [ - "indent" - "icon" - { - name = "container"; - content = [ - { - name = "name"; - zindex = 10; - } - { - name = "clipboard"; - zindex = 10; - } - { - name = "bufnr"; - zindex = 10; - } - { - name = "modified"; - zindex = 20; - align = "right"; - } - { - name = "diagnostics"; - zindex = 20; - align = "right"; - } - { - name = "git_status"; - zindex = 20; - align = "right"; - } - ]; - } - ] - '' "file renderers"; + file = mkRendererComponentListOption [ + "indent" + "icon" + { + name = "container"; + content = [ + { + name = "name"; + zindex = 10; + } + { + name = "clipboard"; + zindex = 10; + } + { + name = "bufnr"; + zindex = 10; + } + { + name = "modified"; + zindex = 20; + align = "right"; + } + { + name = "diagnostics"; + zindex = 20; + align = "right"; + } + { + name = "git_status"; + zindex = 20; + align = "right"; + } + ]; + } + ] "file renderers"; - message = mkRendererComponentListOption '' - [ - { - name = "indent"; - with_markers = false; - } - { - name = "name"; - highlight = "NeoTreeMessage"; - } - ] - '' "message renderers"; + message = mkRendererComponentListOption [ + { + name = "indent"; + with_markers = false; + } + { + name = "name"; + highlight = "NeoTreeMessage"; + } + ] "message renderers"; - terminal = mkRendererComponentListOption '' - [ - "indent" - "icon" - "name" - "bufnr" - ] - '' "message renderers"; + terminal = mkRendererComponentListOption [ + "indent" + "icon" + "name" + "bufnr" + ] "message renderers"; }; - nestingRules = helpers.defaultNullOpts.mkNullable (types.attrsOf types.str) "{}" "nesting rules"; + nestingRules = helpers.defaultNullOpts.mkAttrsOf types.str { } "nesting rules"; window = { - position = helpers.defaultNullOpts.mkEnum [ + position = helpers.defaultNullOpts.mkEnumFirstDefault [ "left" "right" "top" "bottom" "float" "current" - ] "left" "position"; + ] "position"; width = helpers.defaultNullOpts.mkInt 40 "Applies to left and right positions"; @@ -572,7 +575,7 @@ in nowait = helpers.defaultNullOpts.mkBool true "nowait"; }; - mappings = mkMappingsOption '' + mappings = mkMappingsOption (literalMD '' ```nix { "" = { @@ -622,10 +625,10 @@ in ">" = "next_source"; } ``` - ''; + ''); }; filesystem = { - window = mkWindowMappingsOption '' + window = mkWindowMappingsOption (literalMD '' ```nix { H = "toggle_hidden"; @@ -642,7 +645,7 @@ in "]g" = "next_git_modified"; } ``` - ''; + ''); asyncDirectoryScan = helpers.defaultNullOpts.mkEnumFirstDefault [ @@ -688,39 +691,44 @@ in hideHidden = helpers.defaultNullOpts.mkBool true "only works on Windows for hidden files/directories"; - hideByName = - helpers.defaultNullOpts.mkNullable (types.listOf types.str) ''[".DS_Store" "thumbs.db"]'' - "hide by name"; + hideByName = helpers.defaultNullOpts.mkListOf types.str [ + ".DS_Store" + "thumbs.db" + ] "hide by name"; - hideByPattern = helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]" '' - Hide by pattern. + hideByPattern = helpers.defaultNullOpts.mkListOf' { + type = types.str; + pluginDefault = [ ]; + description = "Hide by pattern."; + example = [ + "*.meta" + "*/src/*/tsconfig.json" + ]; + }; - Example: - ```nix - [ - "*.meta" - "*/src/*/tsconfig.json" - ] - ``` - ''; + alwaysShow = helpers.defaultNullOpts.mkListOf' { + type = types.str; + pluginDefault = [ ]; + description = "Files/folders to always show."; + example = [ ".gitignore" ]; + }; - alwaysShow = helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]" '' - Files/folders to always show. + neverShow = helpers.defaultNullOpts.mkListOf' { + type = types.str; + pluginDefault = [ ]; + description = "Files/folders to never show."; + example = [ + ".DS_Store" + "thumbs.db" + ]; + }; - Example: `[".gitignore"]` - ''; - - neverShow = helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]" '' - Files/folders to never show. - - Example: `[".DS_Store" "thumbs.db"]` - ''; - - neverShowByPattern = helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]" '' - Files/folders to never show (by pattern). - - Example: `[".null-ls_*"]` - ''; + neverShowByPattern = helpers.defaultNullOpts.mkListOf' { + type = types.str; + pluginDefault = [ ]; + description = "Files/folders to never show (by pattern)."; + example = [ ".null-ls_*" ]; + }; }; findByFullPathWords = helpers.defaultNullOpts.mkBool false '' @@ -737,14 +745,12 @@ in helpers.mkNullOrStrLuaFnOr (types.submodule { options = { - fd = helpers.defaultNullOpts.mkNullable (types.listOf types.str) '' - [ - "--exclude" - ".git" - "--exclude" - "node_modules" - ] - '' "You can specify extra args to pass to the find command."; + fd = helpers.defaultNullOpts.mkListOf types.str [ + "--exclude" + ".git" + "--exclude" + "node_modules" + ] "You can specify extra args to pass to the find command."; }; }) '' @@ -824,51 +830,43 @@ in groupEmptyDirs = helpers.defaultNullOpts.mkBool true "When true, empty directories will be grouped together."; - window = mkWindowMappingsOption '' - { - "" = "navigate_up"; - "." = "set_root"; - bd = "buffer_delete"; - } - ''; + window = mkWindowMappingsOption { + "" = "navigate_up"; + "." = "set_root"; + bd = "buffer_delete"; + }; }; gitStatus = { - window = mkWindowMappingsOption '' - { - A = "git_add_all"; - gu = "git_unstage_file"; - ga = "git_add_file"; - gr = "git_revert_file"; - gc = "git_commit"; - gp = "git_push"; - gg = "git_commit_and_push"; - } - ''; + window = mkWindowMappingsOption { + A = "git_add_all"; + gu = "git_unstage_file"; + ga = "git_add_file"; + gr = "git_revert_file"; + gc = "git_commit"; + gp = "git_push"; + gg = "git_commit_and_push"; + }; }; example = { renderers = { - custom = mkRendererComponentListOption '' - [ - "indent" - { - name = "icon"; - default = "C"; - } - "custom" - "name" - ] - '' "custom renderers"; + custom = mkRendererComponentListOption [ + "indent" + { + name = "icon"; + default = "C"; + } + "custom" + "name" + ] "custom renderers"; }; - window = mkWindowMappingsOption '' - { - "" = "toggle_node"; - "" = "example_command"; - d = "show_debug_info"; - } - ''; + window = mkWindowMappingsOption { + "" = "toggle_node"; + "" = "example_command"; + d = "show_debug_info"; + }; }; documentSymbols = { @@ -913,7 +911,7 @@ in https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_documentSymbol ''; }; - window = mkWindowMappingsOption "{}"; + window = mkWindowMappingsOption { }; }; }; diff --git a/plugins/filetrees/nvim-tree.nix b/plugins/filetrees/nvim-tree.nix index 437190c5..d5bf37fb 100644 --- a/plugins/filetrees/nvim-tree.nix +++ b/plugins/filetrees/nvim-tree.nix @@ -11,19 +11,15 @@ let inherit (helpers) ifNonNull'; openWinConfigOption = - helpers.defaultNullOpts.mkNullable - # Type - types.attrs + helpers.defaultNullOpts.mkAttributeSet # Default - '' - { - col = 1; - row = 1; - relative = "cursor"; - border = "shadow"; - style = "minimal"; - } - '' + { + col = 1; + row = 1; + relative = "cursor"; + border = "shadow"; + style = "minimal"; + } # Description '' Floating window config for file_popup. See |nvim_open_win| for more details. @@ -97,14 +93,13 @@ in ''; sortBy = - helpers.defaultNullOpts.mkNullable - (types.either (types.enum [ + helpers.defaultNullOpts.mkEnumFirstDefault + [ "name" "case_sensitive" "modification_time" "extension" - ]) helpers.nixvimTypes.rawLua) - "name" + ] '' Changes how files within the same directory are sorted. Can be one of `name`, `case_sensitive`, `modification_time`, `extension` or a @@ -139,7 +134,7 @@ in Keeps the cursor on the first letter of the filename when moving in the tree. ''; - rootDirs = helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]" '' + rootDirs = helpers.defaultNullOpts.mkListOf types.str [ ] '' Preferred root directories. Only relevant when `updateFocusedFile.updateRoot` is `true`. ''; @@ -187,7 +182,7 @@ in Only relevant when `updateFocusedFile.enable` is `true` ''; - ignoreList = helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]" '' + ignoreList = helpers.defaultNullOpts.mkListOf types.str [ ] '' List of buffer names and filetypes that will not update the root dir of the tree if the file isn't found under the current root directory. Only relevant when `updateFocusedFile.updateRoot` and `updateFocusedFile.enable` are @@ -205,7 +200,7 @@ in Windows: "`cmd"` ''; - args = helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]" '' + args = helpers.defaultNullOpts.mkListOf types.str [ ] '' Optional argument list. Leave empty for OS specific default: @@ -310,7 +305,7 @@ in Idle milliseconds between filesystem change and action. ''; - ignoreDirs = helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]" '' + ignoreDirs = helpers.defaultNullOpts.mkListOf types.str [ ] '' List of vim regex for absolute directory paths that will not be watched. Backslashes must be escaped e.g. `"my-project/\\.build$"`. See |string-match|. @@ -389,7 +384,7 @@ in }) ] ) - "30" + 30 '' Width of the window: can be a `%` string, a number representing columns or a table. A table indicates that the view should be dynamically sized based on the longest line. @@ -421,13 +416,12 @@ in ''; signcolumn = - helpers.defaultNullOpts.mkEnum + helpers.defaultNullOpts.mkEnumFirstDefault [ "yes" "auto" "no" ] - "yes" '' Show diagnostic sign column. Value can be `"yes"`, `"auto"`, `"no"`. ''; @@ -570,13 +564,12 @@ in ''; modifiedPlacement = - helpers.defaultNullOpts.mkEnum + helpers.defaultNullOpts.mkEnumFirstDefault [ "after" "before" "signcolumn" ] - "after" '' Place where the modified icon will be rendered. Can be `"after"` or `"before"` filename (after the file/folders icons) or `"signcolumn"` @@ -682,10 +675,12 @@ in }; }; - specialFiles = - helpers.defaultNullOpts.mkNullable (types.listOf types.str) - "[ \"Cargo.toml\" \"Makefile\" \"README.md\" \"readme.md\" ]" - "A list of filenames that gets highlighted with `NvimTreeSpecialFile`."; + specialFiles = helpers.defaultNullOpts.mkListOf types.str [ + "Cargo.toml" + "Makefile" + "README.md" + "readme.md" + ] "A list of filenames that gets highlighted with `NvimTreeSpecialFile`."; symlinkDestination = helpers.defaultNullOpts.mkBool true '' Whether to show the destination of the symlink. @@ -711,13 +706,13 @@ in A reload or filesystem event will result in an update. ''; - custom = helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]" '' + custom = helpers.defaultNullOpts.mkListOf types.str [ ] '' Custom list of vim regex for file/directory names that will not be shown. Backslashes must be escaped e.g. "^\\.git". See |string-match|. Toggle via the `toggle_custom` action, default mapping `U`. ''; - exclude = helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]" '' + exclude = helpers.defaultNullOpts.mkListOf types.str [ ] '' List of directories or files to exclude from filtering: always show them. Overrides `git.ignore`, `filters.dotfiles` and `filters.custom`. ''; @@ -753,7 +748,7 @@ in Avoids hanging neovim when running this action on very large folders. ''; - exclude = helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]" '' + exclude = helpers.defaultNullOpts.mkListOf types.str [ ] '' A list of directories that should not be expanded automatically. E.g `[ ".git" "target" "build" ]` etc. ''; @@ -781,29 +776,39 @@ in tree. ''; - picker = - helpers.defaultNullOpts.mkNullable (types.either types.str helpers.nixvimTypes.rawLua) "default" - '' - Change the default window picker, can be a string `"default"` or a function. - The function should return the window id that will open the node, or `nil` if an - invalid window is picked or user cancelled the action. + picker = helpers.defaultNullOpts.mkStr' { + pluginDefault = "default"; + description = '' + Change the default window picker. This can either be a string or a function (see example). - This can be both a string or a function (see example below). - picker = { __raw = "require('window-picker').pick_window"; }; - ''; + The function should return the window id that will open the node, or `nil` if an + invalid window is picked or user cancelled the action. + ''; + example.__raw = "require('window-picker').pick_window"; + }; chars = helpers.defaultNullOpts.mkStr "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" '' A string of chars used as identifiers by the window picker. ''; exclude = - helpers.defaultNullOpts.mkNullable (with types; attrsOf (listOf str)) - '' - { - filetype = [ "notify" "lazy" "packer" "qf" "diff" "fugitive" "fugitiveblame" ]; - buftype = [ "nofile" "terminal" "help" ]; - }; - '' + helpers.defaultNullOpts.mkAttrsOf (with types; listOf str) + { + filetype = [ + "notify" + "lazy" + "packer" + "qf" + "diff" + "fugitive" + "fugitiveblame" + ]; + buftype = [ + "nofile" + "terminal" + "help" + ]; + } '' Table of buffer option names mapped to a list of option values that indicates to the picker that the buffer's window should not be selectable. @@ -845,7 +850,7 @@ in Closes the tree across all tabpages when the tree is closed. ''; - ignore = helpers.defaultNullOpts.mkNullable (with types; listOf str) "[]" '' + ignore = helpers.defaultNullOpts.mkListOf types.str [ ] '' List of filetypes or buffer names on new tab that will prevent |nvim-tree.tab.sync.open| and |nvim-tree.tab.sync.close| '';