init.lua/lua/plugins/mini/files.lua

37 lines
1.3 KiB
Lua

-- super simple but amazing file manager
require("mini.files").setup()
-- setup simple function for toggling mini.files
local minifiles_toggle = function(...)
if not MiniFiles.close() then MiniFiles.open(...) end
end
-- Set focused directory as current working directory
local set_cwd = function()
local path = (MiniFiles.get_fs_entry() or {}).path
if path == nil then return vim.notify('Cursor is not on valid entry') end
vim.fn.chdir(vim.fs.dirname(path))
end
-- Yank in register full path of entry under cursor
local yank_path = function()
local path = (MiniFiles.get_fs_entry() or {}).path
if path == nil then return vim.notify('Cursor is not on valid entry') end
vim.fn.setreg(vim.v.register, path)
end
-- Open path with system default handler (useful for non-text files)
local ui_open = function() vim.ui.open(MiniFiles.get_fs_entry().path) end
vim.api.nvim_create_autocmd('User', {
pattern = 'MiniFilesBufferCreate',
callback = function(args)
local b = args.data.buf_id
vim.keymap.set('n', 'g~', set_cwd, { buffer = b, desc = 'Set cwd' })
vim.keymap.set('n', 'gX', ui_open, { buffer = b, desc = 'OS open' })
vim.keymap.set('n', 'gy', yank_path, { buffer = b, desc = 'Yank path' })
end,
})
-- setup keybinding for mini.files
vim.keymap.set("n", "<Leader>e", function() minifiles_toggle() end, { desc = "Toggle mini.files explorer" })