return { "mini.files", lazy = true, after = function() require("mini.files").setup { mappings = { close = "", }, windows = { preview = true, }, } -- Add functionality -- 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, }) -- Add custom bookmarks. local set_mark = function(id, path, desc) MiniFiles.set_bookmark(id, path, { desc = desc }) end vim.api.nvim_create_autocmd('User', { pattern = 'MiniFilesExplorerOpen', callback = function() set_mark('w', vim.fn.getcwd, 'Working directory') -- callable set_mark('~', '~', 'Home directory') end, }) -- Add split keys local map_split = function(buf_id, lhs, direction) local rhs = function() -- Make new window and set it as target local cur_target = MiniFiles.get_explorer_state().target_window local new_target = vim.api.nvim_win_call(cur_target, function() vim.cmd(direction .. ' split') return vim.api.nvim_get_current_win() end) MiniFiles.set_target_window(new_target) MiniFiles.go_in() end -- Adding `desc` will result into `show_help` entries local desc = 'Split ' .. direction vim.keymap.set('n', lhs, rhs, { buffer = buf_id, desc = desc }) end vim.api.nvim_create_autocmd('User', { pattern = 'MiniFilesBufferCreate', callback = function(args) local buf_id = args.data.buf_id -- Tweak keys to your liking map_split(buf_id, '', 'belowright horizontal') map_split(buf_id, '', 'belowright vertical') map_split(buf_id, '', 'tab') end, }) end }