* fix(#1815): don't schedule find file calls * fix(#1815): debounce BufEnter find_file * fix(#1815): deprecate nvim-tree.find_file * fix(#1815): debounce BufEnter find_file * fix(#1815): debounce BufEnter find_file
This commit is contained in:
parent
95ed588211
commit
623cecb809
@ -280,6 +280,7 @@ Subsequent calls to setup will replace the previous configuration.
|
||||
},
|
||||
update_focused_file = {
|
||||
enable = false,
|
||||
debounce_delay = 15,
|
||||
update_root = false,
|
||||
ignore_list = {},
|
||||
},
|
||||
@ -507,6 +508,11 @@ until it finds the file.
|
||||
Enable this feature.
|
||||
Type: `boolean`, Default: `false`
|
||||
|
||||
*nvim-tree.update_focused_file.debounce_delay*
|
||||
Idle milliseconds between BufEnter and update.
|
||||
The last BufEnter will be focused, others are discarded.
|
||||
Type: `number`, Default: `15` (ms)
|
||||
|
||||
*nvim-tree.update_focused_file.update_root* (previously `update_focused_file.update_cwd`)
|
||||
Update the root directory of the tree if the file is not under current
|
||||
root directory. It prefers vim's cwd and `root_dirs`.
|
||||
|
||||
@ -76,7 +76,7 @@ function M.toggle(find_file, no_focus, cwd, bang)
|
||||
local previous_buf = vim.api.nvim_get_current_buf()
|
||||
M.open(cwd)
|
||||
if _config.update_focused_file.enable or find_file then
|
||||
M.find_file(false, previous_buf, bang)
|
||||
find_file(false, previous_buf, bang)
|
||||
end
|
||||
if no_focus then
|
||||
vim.cmd "noautocmd wincmd p"
|
||||
@ -143,7 +143,7 @@ local function is_file_readable(fname)
|
||||
return stat and stat.type == "file" and vim.loop.fs_access(fname, "R")
|
||||
end
|
||||
|
||||
function M.find_file(with_open, bufnr, bang)
|
||||
local function find_file(with_open, bufnr, bang)
|
||||
if not with_open and not core.get_explorer() then
|
||||
return
|
||||
end
|
||||
@ -162,13 +162,20 @@ function M.find_file(with_open, bufnr, bang)
|
||||
M.open()
|
||||
end
|
||||
|
||||
-- if we don't schedule, it will search for NvimTree
|
||||
vim.schedule(function()
|
||||
if bang or _config.update_focused_file.update_root then
|
||||
M.change_root(filepath, bufnr)
|
||||
end
|
||||
|
||||
require("nvim-tree.actions.finders.find-file").fn(filepath)
|
||||
end)
|
||||
end
|
||||
|
||||
---@deprecated 2022/12/16
|
||||
function M.find_file(with_open, bufnr, bang)
|
||||
vim.notify_once(
|
||||
"require('nvim-tree').find_file is not API and will soon be unavailable. Please use api.tree.find_file as per :help nvim-tree-api",
|
||||
vim.log.levels.WARN
|
||||
)
|
||||
find_file(with_open, bufnr, bang)
|
||||
end
|
||||
|
||||
M.resize = view.resize
|
||||
@ -272,7 +279,7 @@ function M.on_enter(netrw_disabled)
|
||||
if should_focus_other_window then
|
||||
vim.cmd "noautocmd wincmd p"
|
||||
if should_find then
|
||||
M.find_file(false)
|
||||
find_file(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -306,7 +313,7 @@ local function setup_vim_commands()
|
||||
vim.api.nvim_create_user_command("NvimTreeRefresh", reloaders.reload_explorer, { bar = true })
|
||||
vim.api.nvim_create_user_command("NvimTreeClipboard", copy_paste.print_clipboard, { bar = true })
|
||||
vim.api.nvim_create_user_command("NvimTreeFindFile", function(res)
|
||||
M.find_file(true, nil, res.bang)
|
||||
find_file(true, nil, res.bang)
|
||||
end, { bang = true, bar = true })
|
||||
vim.api.nvim_create_user_command("NvimTreeFindFileToggle", function(res)
|
||||
M.toggle(true, false, res.args, res.bang)
|
||||
@ -324,7 +331,7 @@ function M.change_dir(name)
|
||||
change_dir.fn(name)
|
||||
|
||||
if _config.update_focused_file.enable then
|
||||
M.find_file(false)
|
||||
find_file(false)
|
||||
end
|
||||
end
|
||||
|
||||
@ -400,7 +407,9 @@ local function setup_autocommands(opts)
|
||||
if opts.update_focused_file.enable then
|
||||
create_nvim_tree_autocmd("BufEnter", {
|
||||
callback = function()
|
||||
M.find_file(false)
|
||||
utils.debounce("BufEnter:find_file", opts.update_focused_file.debounce_delay, function()
|
||||
find_file(false)
|
||||
end)
|
||||
end,
|
||||
})
|
||||
end
|
||||
@ -572,6 +581,7 @@ local DEFAULT_OPTS = { -- BEGIN_DEFAULT_OPTS
|
||||
},
|
||||
update_focused_file = {
|
||||
enable = false,
|
||||
debounce_delay = 15,
|
||||
update_root = false,
|
||||
ignore_list = {},
|
||||
},
|
||||
|
||||
Loading…
Reference in New Issue
Block a user