refactor: simplify opening file in new tab
fixes #1271. Also fixes opening a file in new tab when close_on_open was true. This introduces breaking change since we don't do any extra behavior and let the buffer be opened by the tree. The previous behavior was a bit old and i believe this should've been fixed by now. Reference this commit if unexpected behavior appears while opening files in new tabs from nvim-tree.
This commit is contained in:
@@ -131,33 +131,7 @@ end
|
|||||||
local function open_file_in_tab(filename)
|
local function open_file_in_tab(filename)
|
||||||
if M.quit_on_open then
|
if M.quit_on_open then
|
||||||
view.close()
|
view.close()
|
||||||
else
|
|
||||||
-- Switch window first to ensure new window doesn't inherit settings from
|
|
||||||
-- NvimTree
|
|
||||||
if lib.target_winid > 0 and api.nvim_win_is_valid(lib.target_winid) then
|
|
||||||
api.nvim_set_current_win(lib.target_winid)
|
|
||||||
else
|
|
||||||
vim.cmd "wincmd p"
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- This sequence of commands are here to ensure a number of things: the new
|
|
||||||
-- buffer must be opened in the current tabpage first so that focus can be
|
|
||||||
-- brought back to the tree if it wasn't quit_on_open. It also ensures that
|
|
||||||
-- when we open the new tabpage with the file, its window doesn't inherit
|
|
||||||
-- settings from NvimTree, as it was already loaded.
|
|
||||||
|
|
||||||
vim.cmd("edit " .. vim.fn.fnameescape(filename))
|
|
||||||
|
|
||||||
local alt_bufid = vim.fn.bufnr "#"
|
|
||||||
if alt_bufid ~= -1 then
|
|
||||||
api.nvim_set_current_buf(alt_bufid)
|
|
||||||
end
|
|
||||||
|
|
||||||
if not M.quit_on_open then
|
|
||||||
vim.cmd "wincmd p"
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.cmd("tabe " .. vim.fn.fnameescape(filename))
|
vim.cmd("tabe " .. vim.fn.fnameescape(filename))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ end
|
|||||||
function M.is_visible(opts)
|
function M.is_visible(opts)
|
||||||
if opts and opts.any_tabpage then
|
if opts and opts.any_tabpage then
|
||||||
for _, v in pairs(M.View.tabpages) do
|
for _, v in pairs(M.View.tabpages) do
|
||||||
if a.nvim_win_is_valid(v.winnr) then
|
if v.winnr and a.nvim_win_is_valid(v.winnr) then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user