summaryrefslogtreecommitdiff
path: root/pkgs/custom-neovim/config/lua/plugins/mini-pick.lua
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/custom-neovim/config/lua/plugins/mini-pick.lua')
-rw-r--r--pkgs/custom-neovim/config/lua/plugins/mini-pick.lua36
1 files changed, 36 insertions, 0 deletions
diff --git a/pkgs/custom-neovim/config/lua/plugins/mini-pick.lua b/pkgs/custom-neovim/config/lua/plugins/mini-pick.lua
index 68e57ec..6d0b5fa 100644
--- a/pkgs/custom-neovim/config/lua/plugins/mini-pick.lua
+++ b/pkgs/custom-neovim/config/lua/plugins/mini-pick.lua
@@ -21,5 +21,41 @@ return {
require("mini.extra").setup()
vim.ui.select = MiniPick.ui_select
+
+ -- Switch to a dir in the zoxide database
+ MiniPick.registry.zoxide = function()
+ local zoxide_output = vim.fn.system('zoxide query -l')
+ local zoxide_dirs = vim.split(zoxide_output, '\n', { trimempty = true })
+ MiniPick.start({
+ source = {
+ items = zoxide_dirs,
+ name = "zoxide",
+ choose = function(dir)
+ vim.fn.chdir(dir)
+ end
+ }
+ })
+ end
+
+ -- Switch to a subdir of the current dir
+ MiniPick.registry.cd = function(local_opts)
+ local scope = local_opts.scope or 'current'
+ local fd_output = vim.fn.system('fd -t d')
+ local fd_dirs = vim.split(fd_output, '\n', { trimempty = true })
+ MiniPick.start({
+ source = {
+ items = fd_dirs,
+ name = (scope == 'tab') and "tcd" or "cd",
+ choose = function (dir)
+ if (scope == 'tab') then
+ vim.cmd.tcd(dir)
+ else
+ vim.cmd.cd(dir)
+ end
+ end
+ }
+ })
+ end
+
end
}