Skip to content

Commit 5968811

Browse files
committed
feat: add enable_refresh_on_write option to disable auto refresh, closes #338
1 parent a7f5bee commit 5968811

File tree

4 files changed

+27
-20
lines changed

4 files changed

+27
-20
lines changed

lua/neo-tree/defaults.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ local config = {
88
enable_diagnostics = true,
99
enable_git_status = true,
1010
enable_modified_markers = true, -- Show markers for files with unsaved changes.
11+
enable_refresh_on_write = true, -- Refresh the tree when a file is written. Only used if `use_libuv_file_watcher` is false.
1112
git_status_async = true,
1213
log_level = "info", -- "trace", "debug", "info", "warn", "error", "fatal"
1314
log_to_file = false, -- true, false, "/path/to/file.log", use :NeoTreeLogs to show the file

lua/neo-tree/sources/buffers/init.lua

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,12 @@ M.setup = function(config, global_config)
132132
end
133133

134134
local refresh_events = {
135-
events.VIM_BUFFER_CHANGED,
136135
events.VIM_BUFFER_ADDED,
137136
events.VIM_BUFFER_DELETED,
138137
}
138+
if global_config.enable_refresh_on_write then
139+
table.insert(refresh_events, events.VIM_BUFFER_CHANGED)
140+
end
139141
for _, e in ipairs(refresh_events) do
140142
manager.subscribe(M.name, {
141143
event = e,

lua/neo-tree/sources/filesystem/init.lua

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -320,18 +320,20 @@ M.setup = function(config, global_config)
320320
})
321321
else
322322
require("neo-tree.sources.filesystem.lib.fs_watch").unwatch_all()
323-
manager.subscribe(M.name, {
324-
event = events.VIM_BUFFER_CHANGED,
325-
handler = function(arg)
326-
local afile = arg.afile or ""
327-
if utils.is_real_file(afile) then
328-
log.trace("refreshing due to vim_buffer_changed event: ", afile)
329-
manager.refresh(M.name)
330-
else
331-
log.trace("Ignoring vim_buffer_changed event for non-file: ", afile)
332-
end
333-
end,
334-
})
323+
if global_config.enable_refresh_on_write then
324+
manager.subscribe(M.name, {
325+
event = events.VIM_BUFFER_CHANGED,
326+
handler = function(arg)
327+
local afile = arg.afile or ""
328+
if utils.is_real_file(afile) then
329+
log.trace("refreshing due to vim_buffer_changed event: ", afile)
330+
manager.refresh(M.name)
331+
else
332+
log.trace("Ignoring vim_buffer_changed event for non-file: ", afile)
333+
end
334+
end,
335+
})
336+
end
335337
end
336338

337339
--Configure event handlers for cwd changes

lua/neo-tree/sources/git_status/init.lua

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,16 @@ M.setup = function(config, global_config)
4242
})
4343
end
4444

45-
manager.subscribe(M.name, {
46-
event = events.VIM_BUFFER_CHANGED,
47-
handler = function(args)
48-
if utils.is_real_file(args.afile) then
49-
manager.refresh(M.name)
45+
if global_config.enable_refresh_on_write then
46+
manager.subscribe(M.name, {
47+
event = events.VIM_BUFFER_CHANGED,
48+
handler = function(args)
49+
if utils.is_real_file(args.afile) then
50+
manager.refresh(M.name)
51+
end
5052
end
51-
end
52-
})
53+
})
54+
end
5355

5456
if config.bind_to_cwd then
5557
manager.subscribe(M.name, {

0 commit comments

Comments
 (0)