From 192b2266f7a4caf1867cdf01260d52eea1ead42c Mon Sep 17 00:00:00 2001 From: kiyan Date: Sat, 5 Feb 2022 13:01:37 +0100 Subject: [PATCH] fix: synchronous file creation allows cursor to be set when finishing fixes #806 --- lua/nvim-tree/actions/create-file.lua | 22 ++++++++++------------ lua/nvim-tree/lib.lua | 5 ++++- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lua/nvim-tree/actions/create-file.lua b/lua/nvim-tree/actions/create-file.lua index 72dd2674..efc7c8b1 100644 --- a/lua/nvim-tree/actions/create-file.lua +++ b/lua/nvim-tree/actions/create-file.lua @@ -24,16 +24,13 @@ local function create_file(file) return end end - uv.fs_open(file, "w", 420, vim.schedule_wrap(function(err, fd) - if err then - a.nvim_err_writeln('Couldn\'t create file '..file) - else - uv.fs_close(fd) - events._dispatch_file_created(file) - lib.refresh_tree() - focus_file(file) - end - end)) + local ok, fd = pcall(uv.fs_open, file, "w", 420) + if not ok then + a.nvim_err_writeln('Couldn\'t create file '..file) + return + end + uv.fs_close(fd) + events._dispatch_file_created(file) end local function get_num_entries(iter) @@ -98,8 +95,9 @@ function M.fn(node) a.nvim_out_write(ans..' was properly created\n') end events._dispatch_folder_created(ans) - lib.refresh_tree() - focus_file(ans) + lib.refresh_tree(function() + focus_file(ans) + end) end return M diff --git a/lua/nvim-tree/lib.lua b/lua/nvim-tree/lib.lua index 07c681d8..a1a45eee 100644 --- a/lua/nvim-tree/lib.lua +++ b/lua/nvim-tree/lib.lua @@ -150,7 +150,7 @@ local function refresh_nodes(node, projects) end local event_running = false -function M.refresh_tree() +function M.refresh_tree(callback) if event_running or not M.Tree.cwd or vim.v.exiting ~= vim.NIL then return end @@ -160,6 +160,9 @@ function M.refresh_tree() refresh_nodes(M.Tree, projects) if view.win_open() then M.redraw() + if callback then + callback() + end end diagnostics.update() event_running = false