diff options
author | Mathias Fußenegger <mfussenegger@users.noreply.github.com> | 2023-11-19 14:25:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-19 14:25:32 +0100 |
commit | de28a0f84c577e264f37cd001b03d640db7d5ef9 (patch) | |
tree | ad69a1e63266b5e20f05b18d84a6d3a457525f45 /src/nvim/lua/executor.c | |
parent | a84b454ebe661981f292ee8fc73be4f9cd3a5884 (diff) | |
download | rneovim-de28a0f84c577e264f37cd001b03d640db7d5ef9.tar.gz rneovim-de28a0f84c577e264f37cd001b03d640db7d5ef9.tar.bz2 rneovim-de28a0f84c577e264f37cd001b03d640db7d5ef9.zip |
perf(lsp): replace file polling on linux with per dir watcher (#26108)
Should help with https://github.com/neovim/neovim/issues/23291
On linux `new_fs_event` doesn't support recursive watching, but we can
still use it to watch folders.
The downside of this approach is that we may end up sending some false
`Deleted` events. For example, if you save a file named `foo` there will
be a intermediate `foo~` due to the save mechanism of neovim.
The events we get from vim.uv in that case are:
- rename: foo~
- rename: foo~
- rename: foo
- rename: foo
- change: foo
- change: foo
The mechanism in this PR uses a debounce to reduce this to:
- deleted: foo~
- changed: foo
`foo~` will be the false positive.
I suspect that for the LSP case this is good enough. If not, we may need
to follow up on this and keep a table in memory that tracks available
files.
Diffstat (limited to 'src/nvim/lua/executor.c')
0 files changed, 0 insertions, 0 deletions