@@ -10,6 +10,7 @@ local utils = require "nvim-tree.utils"
10
10
local change_dir = require " nvim-tree.actions.change-dir"
11
11
local legacy = require " nvim-tree.legacy"
12
12
local core = require " nvim-tree.core"
13
+ local reloaders = require " nvim-tree.actions.reloaders"
13
14
14
15
local _config = {}
15
16
@@ -272,40 +273,56 @@ function M.change_dir(name)
272
273
end
273
274
274
275
local function setup_autocommands (opts )
275
- vim .cmd " augroup NvimTree"
276
- vim .cmd " autocmd!"
276
+ local augroup_id = vim .api .nvim_create_augroup (" NvimTree" , {})
277
+ local function create_nvim_tree_autocmd (name , custom_opts )
278
+ local default_opts = { group = augroup_id }
279
+ vim .api .nvim_create_autocmd (name , vim .tbl_extend (" force" , default_opts , custom_opts ))
280
+ end
277
281
278
282
-- reset highlights when colorscheme is changed
279
- vim .cmd " au ColorScheme * lua require'nvim-tree'.reset_highlight()"
283
+ create_nvim_tree_autocmd (" ColorScheme" , { callback = M .reset_highlight })
284
+
280
285
if opts .auto_reload_on_write then
281
- vim . cmd " au BufWritePost * lua require'nvim-tree.actions. reloaders' .reload_explorer() "
286
+ create_nvim_tree_autocmd ( " BufWritePost" , { callback = reloaders .reload_explorer })
282
287
end
283
- vim .cmd " au User FugitiveChanged,NeogitStatusRefreshed lua require'nvim-tree.actions.reloaders'.reload_git()"
288
+ create_nvim_tree_autocmd (" User" , {
289
+ pattern = { " FugitiveChanged" , " NeogitStatusRefreshed" },
290
+ callback = reloaders .reload_git ,
291
+ })
284
292
285
293
if opts .open_on_tab then
286
- vim . cmd " au TabEnter * lua require'nvim-tree' .tab_change() "
294
+ create_nvim_tree_autocmd ( " TabEnter" , { callback = M .tab_change })
287
295
end
288
296
if opts .hijack_cursor then
289
- vim . cmd " au CursorMoved NvimTree_* lua require'nvim-tree' .place_cursor_on_node() "
297
+ create_nvim_tree_autocmd ( " CursorMoved" , { pattern = " NvimTree_*" , callback = M .place_cursor_on_node })
290
298
end
291
299
if opts .update_cwd then
292
- vim .cmd " au DirChanged * lua require'nvim-tree'.change_dir(vim.loop.cwd())"
300
+ create_nvim_tree_autocmd (" DirChanged" , {
301
+ callback = function ()
302
+ M .change_dir (vim .loop .cwd )
303
+ end ,
304
+ })
293
305
end
294
306
if opts .update_focused_file .enable then
295
- vim .cmd " au BufEnter * lua require'nvim-tree'.find_file(false)"
307
+ create_nvim_tree_autocmd (" BufEnter" , {
308
+ callback = function ()
309
+ M .find_file (false )
310
+ end ,
311
+ })
296
312
end
297
313
298
314
if not opts .actions .open_file .quit_on_open then
299
- vim . cmd " au BufWipeout NvimTree_* lua require'nvim-tree. view' ._prevent_buffer_override() "
315
+ create_nvim_tree_autocmd ( " BufWipeout" , { pattern = " NvimTree_*" , callback = view ._prevent_buffer_override })
300
316
else
301
- vim . cmd " au BufWipeout NvimTree_* lua require'nvim-tree. view' .abandon_current_window() "
317
+ create_nvim_tree_autocmd ( " BufWipeout" , { pattern = " NvimTree_*" , callback = view .abandon_current_window })
302
318
end
303
319
304
320
if opts .hijack_directories .enable then
305
- vim . cmd " au BufEnter, BufNewFile * lua require'nvim-tree' .open_on_directory() "
321
+ create_nvim_tree_autocmd ({ " BufEnter" , " BufNewFile" }, { callback = M .open_on_directory })
306
322
end
307
323
308
- vim .cmd " augroup end"
324
+ -- @TODO seems to work
325
+ -- create_nvim_tree_autocmd("BufEnter", { pattern = "NvimTree_*", callback = reloaders.reload_explorer })
309
326
end
310
327
311
328
local DEFAULT_OPTS = { -- BEGIN_DEFAULT_OPTS
0 commit comments