{ lib, helpers, config, pkgs, ... }: with lib; let telescopeHelpers = import ./_helpers.nix { inherit lib helpers config pkgs ; }; in telescopeHelpers.mkExtension { name = "file-browser"; extensionName = "file_browser"; defaultPackage = pkgs.vimPlugins.telescope-file-browser-nvim; # TODO: introduced 2024-03-24, remove on 2024-05-24 optionsRenamedToSettings = [ "theme" "path" "cwd" "cwdToPath" "grouped" # "files" TODO this warning is causing an 'infinite recursion error'... No idea why "addDirs" "depth" "autoDepth" "selectBuffer" "hidden" "respectGitignore" "browseFiles" "browseFolders" "hideParentDir" "collapseDirs" "quiet" "dirIcon" "dirIconHl" "displayStat" "hijackNetrw" "useFd" "gitStatus" "promptPath" ]; imports = [ (mkRemovedOptionModule [ "plugins" "telescope" "extensions" "file-browser" "mappings" ] '' Use `plugins.telescope.extension.file-browser.settings.mappings` instead but beware, you need to specify the full name of the callback: Example: ``` mappings = { i = { "" = "require('telescope._extensions.file_browser.actions').create"; "" = "require('telescope._extensions.file_browser.actions').create_from_prompt"; "" = "require('telescope._extensions.file_browser.actions').rename"; }; n = { "c" = "require('telescope._extensions.file_browser.actions').create"; "r" = "require('telescope._extensions.file_browser.actions').rename"; "m" = "require('telescope._extensions.file_browser.actions').move"; }; } ``` '' ) ]; settingsOptions = { theme = helpers.mkNullOrStr '' Custom theme, will use your global theme by default. ''; path = helpers.defaultNullOpts.mkStr { __raw = "vim.loop.cwd()"; } '' Directory to browse files from. `vim.fn.expanded` automatically. ''; cwd = helpers.defaultNullOpts.mkStr { __raw = "vim.loop.cwd()"; } '' Directory to browse folders from. `vim.fn.expanded` automatically. ''; cwd_to_path = helpers.defaultNullOpts.mkBool false '' Whether folder browser is launched from `path` rather than `cwd`. ''; grouped = helpers.defaultNullOpts.mkBool false '' Group initial sorting by directories and then files. ''; files = helpers.defaultNullOpts.mkBool true '' Start in file (true) or folder (false) browser. ''; add_dirs = helpers.defaultNullOpts.mkBool true '' Whether the file browser shows folders. ''; depth = helpers.defaultNullOpts.mkUnsignedInt 1 '' File tree depth to display, `false` for unlimited depth. ''; auto_depth = helpers.defaultNullOpts.mkBool false '' Unlimit or set `depth` to `auto_depth` & unset grouped on prompt for file_browser. ''; select_buffer = helpers.defaultNullOpts.mkBool false '' Select current buffer if possible. May imply `hidden=true`. ''; hidden = helpers.defaultNullOpts.mkNullable ( with types; either bool (submodule { options = { file_browser = helpers.defaultNullOpts.mkBool false ""; folder_browser = helpers.defaultNullOpts.mkBool false ""; }; }) ) { file_browser = false; folder_browser = false; } "Determines whether to show hidden files or not."; respect_gitignore = helpers.defaultNullOpts.mkBool false '' Induces slow-down w/ plenary finder (true if `fd` available). ''; browse_files = helpers.defaultNullOpts.mkLuaFn "require('telescope._extensions.file_browser.finders').browse_files" "A custom lua function to override for the file browser."; browse_folders = helpers.defaultNullOpts.mkLuaFn "require('telescope._extensions.file_browser.finders').browse_folders" "A custom lua function to override for the folder browser."; hide_parent_dir = helpers.defaultNullOpts.mkBool false '' Hide `../` in the file browser. ''; collapse_dirs = helpers.defaultNullOpts.mkBool false '' Skip with only a single (possibly hidden) sub-dir in file_browser. ''; quiet = helpers.defaultNullOpts.mkBool false '' Suppress any notification from file_browser actions. ''; dir_icon = helpers.defaultNullOpts.mkStr "" '' Change the icon for a directory. ''; dir_icon_hl = helpers.defaultNullOpts.mkStr "Default" '' Change the highlight group of dir icon. ''; display_stat = helpers.defaultNullOpts.mkAttrsOf types.anything { date = true; size = true; mode = true; } "Ordered stat; see upstream for more info."; hijack_netrw = helpers.defaultNullOpts.mkBool false '' Use telescope file browser when opening directory paths. ''; use_fd = helpers.defaultNullOpts.mkBool true '' Use `fd` if available over `plenary.scandir`. ''; git_status = helpers.defaultNullOpts.mkBool true '' Show the git status of files (true if `git` is found). ''; prompt_path = helpers.defaultNullOpts.mkBool false '' Show the current relative path from cwd as the prompt prefix. ''; mappings = telescopeHelpers.mkMappingsOption { insertDefaults = '' { "" = "require('telescope._extensions.file_browser.actions').create"; "" = "require('telescope._extensions.file_browser.actions').create_from_prompt"; "" = "require('telescope._extensions.file_browser.actions').rename"; "" = "require('telescope._extensions.file_browser.actions').move"; "" = "require('telescope._extensions.file_browser.actions').copy"; "" = "require('telescope._extensions.file_browser.actions').remove"; "" = "require('telescope._extensions.file_browser.actions').open"; "" = "require('telescope._extensions.file_browser.actions').goto_parent_dir"; "" = "require('telescope._extensions.file_browser.actions').goto_home_dir"; "" = "require('telescope._extensions.file_browser.actions').goto_cwd"; "" = "require('telescope._extensions.file_browser.actions').change_cwd"; "" = "require('telescope._extensions.file_browser.actions').toggle_browser"; "" = "require('telescope._extensions.file_browser.actions').toggle_hidden"; "" = "require('telescope._extensions.file_browser.actions').toggle_all"; "" = "require('telescope._extensions.file_browser.actions').backspace"; } ''; normalDefaults = '' { "c" = "require('telescope._extensions.file_browser.actions').create"; "r" = "require('telescope._extensions.file_browser.actions').rename"; "m" = "require('telescope._extensions.file_browser.actions').move"; "y" = "require('telescope._extensions.file_browser.actions').copy"; "d" = "require('telescope._extensions.file_browser.actions').remove"; "o" = "require('telescope._extensions.file_browser.actions').open"; "g" = "require('telescope._extensions.file_browser.actions').goto_parent_dir"; "e" = "require('telescope._extensions.file_browser.actions').goto_home_dir"; "w" = "require('telescope._extensions.file_browser.actions').goto_cwd"; "t" = "require('telescope._extensions.file_browser.actions').change_cwd"; "f" = "require('telescope._extensions.file_browser.actions').toggle_browser"; "h" = "require('telescope._extensions.file_browser.actions').toggle_hidden"; "s" = "require('telescope._extensions.file_browser.actions').toggle_all"; } ''; }; }; settingsExample = { file_browser = { theme = "ivy"; hijack_netrw = true; }; }; }