aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim
diff options
context:
space:
mode:
authorIlia Choly <ilia.choly@gmail.com>2024-05-27 11:06:03 -0400
committerGitHub <noreply@github.com>2024-05-27 17:06:03 +0200
commit292365fa1b8f543ffa2240bb30af34051ad2d7c8 (patch)
treee46024972c6c26dadfad277507c4b40a38cd1636 /runtime/lua/vim
parent8893b7b340e012b714cc42f0562f37405be32d51 (diff)
downloadrneovim-292365fa1b8f543ffa2240bb30af34051ad2d7c8.tar.gz
rneovim-292365fa1b8f543ffa2240bb30af34051ad2d7c8.tar.bz2
rneovim-292365fa1b8f543ffa2240bb30af34051ad2d7c8.zip
fix(lsp): do not detach from buffer if there are uninitialized clients (#29029)
Problem: if on_lines is called before the LSP is initialized, the buffer is detached. Solution: check for uninitialized clients before detaching.
Diffstat (limited to 'runtime/lua/vim')
-rw-r--r--runtime/lua/vim/lsp.lua3
1 files changed, 2 insertions, 1 deletions
diff --git a/runtime/lua/vim/lsp.lua b/runtime/lua/vim/lsp.lua
index 1592fd3151..60b3f3e502 100644
--- a/runtime/lua/vim/lsp.lua
+++ b/runtime/lua/vim/lsp.lua
@@ -577,7 +577,8 @@ local function buf_attach(bufnr)
api.nvim_buf_attach(bufnr, false, {
on_lines = function(_, _, changedtick, firstline, lastline, new_lastline)
if #lsp.get_clients({ bufnr = bufnr }) == 0 then
- return true -- detach
+ -- detach if there are no clients
+ return #lsp.get_clients({ bufnr = bufnr, _uninitialized = true }) == 0
end
util.buf_versions[bufnr] = changedtick
changetracking.send_changes(bufnr, firstline, lastline, new_lastline)