fix(#1628): quit_on_open e: do not open in the tree's window (#1637)

* fix: prevent quit_on_open from opening in same window

* chore: remove condition for quit_on_open

* fix: prevent opening file in a new window on floting nvim-tree

* stylua

Co-authored-by: Alexander Courtis <alex@courtis.org>
This commit is contained in:
Ali Almohaya
2022-10-11 02:28:30 +03:00
committed by GitHub
parent c66cbdfc25
commit b01e7beaa6
2 changed files with 20 additions and 7 deletions

View File

@@ -335,6 +335,16 @@ local function setup_autocommands(opts)
-- reset highlights when colorscheme is changed -- reset highlights when colorscheme is changed
create_nvim_tree_autocmd("ColorScheme", { callback = M.reset_highlight }) create_nvim_tree_autocmd("ColorScheme", { callback = M.reset_highlight })
-- prevent new opened file from opening in the same window as nvim-tree
create_nvim_tree_autocmd("BufWipeout", {
pattern = "NvimTree_*",
callback = function()
if vim.bo.filetype == "NvimTree" then
view._prevent_buffer_override()
end
end,
})
local has_watchers = opts.filesystem_watchers.enable local has_watchers = opts.filesystem_watchers.enable
if opts.auto_reload_on_write and not has_watchers then if opts.auto_reload_on_write and not has_watchers then
@@ -369,12 +379,6 @@ local function setup_autocommands(opts)
}) })
end end
if not opts.actions.open_file.quit_on_open then
create_nvim_tree_autocmd("BufWipeout", { pattern = "NvimTree_*", callback = view._prevent_buffer_override })
else
create_nvim_tree_autocmd("BufWipeout", { pattern = "NvimTree_*", callback = view.abandon_current_window })
end
if opts.hijack_directories.enable then if opts.hijack_directories.enable then
create_nvim_tree_autocmd({ "BufEnter", "BufNewFile" }, { callback = M.open_on_directory }) create_nvim_tree_autocmd({ "BufEnter", "BufNewFile" }, { callback = M.open_on_directory })
end end

View File

@@ -399,8 +399,10 @@ function M._prevent_buffer_override()
-- Otherwise the curwin/curbuf would match the view buffer and the view window. -- Otherwise the curwin/curbuf would match the view buffer and the view window.
vim.schedule(function() vim.schedule(function()
local curwin = a.nvim_get_current_win() local curwin = a.nvim_get_current_win()
local curwinconfig = a.nvim_win_get_config(curwin)
local curbuf = a.nvim_win_get_buf(curwin) local curbuf = a.nvim_win_get_buf(curwin)
local bufname = a.nvim_buf_get_name(curbuf) local bufname = a.nvim_buf_get_name(curbuf)
if not bufname:match "NvimTree" then if not bufname:match "NvimTree" then
for i, tabpage in ipairs(M.View.tabpages) do for i, tabpage in ipairs(M.View.tabpages) do
if tabpage.winnr == view_winnr then if tabpage.winnr == view_winnr then
@@ -420,7 +422,14 @@ function M._prevent_buffer_override()
M.open { focus_tree = false } M.open { focus_tree = false }
require("nvim-tree.renderer").draw() require("nvim-tree.renderer").draw()
pcall(a.nvim_win_close, curwin, { force = true }) pcall(a.nvim_win_close, curwin, { force = true })
-- to handle opening a file using :e when nvim-tree is on floating mode
-- falling back to the current window instead of creating a new one
if curwinconfig.relative ~= "" then
require("nvim-tree.actions.node.open-file").fn("edit_in_place", bufname)
else
require("nvim-tree.actions.node.open-file").fn("edit", bufname) require("nvim-tree.actions.node.open-file").fn("edit", bufname)
end
end) end)
end end