mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-03 17:24:29 +00:00 
			
		
		
		
	fix(lsp): avoid attaching to unloaded buffers (#16723)
Closes https://github.com/neovim/neovim/issues/16562 https://github.com/neovim/neovim/issues/16249 https://github.com/neovim/neovim/issues/16297 * buf_attach_client can be called on an unloaded buffer * on_attach will prematurely fail, while the language server client tracks this buffer as attached * The language server client will track this buffer as attached despite textDocument/didChange notifications not being sent to the server * Instead, check if the buffer is loaded and return early, warning via the lsp logger that buf_attach_client was called on an invalid buffer
This commit is contained in:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							115d4da882
						
					
				
				
					commit
					d6b939a13f
				
			@@ -1156,6 +1156,12 @@ function lsp.buf_attach_client(bufnr, client_id)
 | 
			
		||||
    client_id = {client_id, 'n'};
 | 
			
		||||
  }
 | 
			
		||||
  bufnr = resolve_bufnr(bufnr)
 | 
			
		||||
  if not vim.api.nvim_buf_is_loaded(bufnr) then
 | 
			
		||||
    local _ = log.warn() and log.warn(
 | 
			
		||||
      string.format("buf_attach_client called on unloaded buffer (id: %d): ", bufnr)
 | 
			
		||||
    )
 | 
			
		||||
    return false
 | 
			
		||||
  end
 | 
			
		||||
  local buffer_client_ids = all_buffer_active_clients[bufnr]
 | 
			
		||||
  -- This is our first time attaching to this buffer.
 | 
			
		||||
  if not buffer_client_ids then
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user