diff --git a/lua/lspsaga/finder/init.lua b/lua/lspsaga/finder/init.lua index c436b93d..76ab6b35 100644 --- a/lua/lspsaga/finder/init.lua +++ b/lua/lspsaga/finder/init.lua @@ -438,16 +438,31 @@ function fd:apply_maps() if inexist and (action == 'split' or action == 'vsplit') then local reuse = box.win_reuse(action) if not reuse then - vim.cmd[action](fname) + if (config.finder.actions or {})[action] then + config.finder.actions[action](fname) + else + vim.cmd[action](fname) + end else api.nvim_win_set_buf(reuse, fn.bufadd(fname)) api.nvim_set_current_win(reuse) end else - vim.cmd[action](fname) + if (config.finder.actions or {})[action] then + config.finder.actions[action](fname) + else + vim.cmd[action](fname) + end end restore() - api.nvim_win_set_cursor(0, pos) + xpcall( + function () + api.nvim_win_set_cursor(0, pos) + end, + function (err) + print(err.message) + end + ) beacon({ pos[1] - 1, 0 }, #api.nvim_get_current_line()) return end diff --git a/lua/lspsaga/init.lua b/lua/lspsaga/init.lua index d54040ac..1b8ae90d 100644 --- a/lua/lspsaga/init.lua +++ b/lua/lspsaga/init.lua @@ -96,6 +96,7 @@ local default_config = { quit = 'q', close = 'k', }, + actions = {}, }, definition = { width = 0.6,