mirror of
https://github.com/neovim/neovim.git
synced 2026-11-02 09:49:02 -06:00
feat(autoread): use filewatchers for OS-driven change detection #37971
Problem: The 'autoread' option only checks for file changes reactively — on FocusGained, :checktime, CmdlineEnter, etc. — by polling timestamps. External changes are not detected until the user interacts with Neovim. Solution: Add a core module (runtime/lua/nvim/autoread.lua) enabled from runtime/plugin/autoread.lua that watches each buffer's file using vim._watch.watch() (libuv fs_event). On change detection it calls :checktime, which invokes the existing buf_check_timestamp() logic for reload/prompt handling. Watchers are managed via autocmds tied to buffer lifecycle events and respect the 'autoread' option (global and buffer-local).
This commit is contained in:
1 parent
c622b454b5
commit
400f247397
8 files changed
+411
-3
No files matched your search
@@ -0,0 +1,12 @@
|
||||
-- File-watcher backing for the 'autoread' option.
|
||||
-- Lives here (not in vim/_core/defaults.lua) so that `-u NONE` / `--noplugin`
|
||||
-- skip it: the BufReadPost/BufWritePost autocmds it registers would otherwise
|
||||
-- show up in every test that inspects the autocmd list. Matches the pattern
|
||||
-- used by runtime/plugin/matchparen.lua.
|
||||
|
||||
if vim.g.loaded_autoread ~= nil then
|
||||
return
|
||||
end
|
||||
vim.g.loaded_autoread = 1
|
||||
|
||||
require('nvim.autoread').enable()
|
||||
Reference in new issue
Block a user