| 
					
				 | 
			
			
				@@ -0,0 +1,60 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+From cad0c71adc30ca4d358cec3146495b340b2e068e Mon Sep 17 00:00:00 2001 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+From: Tronikel <contactdonatas@gmail.com> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Date: Tue, 15 Jul 2025 18:18:50 +0300 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Subject: [PATCH] fix: close floating preview window correctly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+--- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ runtime/lua/vim/lsp/util.lua | 13 +++++++------ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 1 file changed, 7 insertions(+), 6 deletions(-) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+index db221ddc6889e6..28d00d6cd307f2 100644 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+--- a/runtime/lua/vim/lsp/util.lua 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++++ b/runtime/lua/vim/lsp/util.lua 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -1418,9 +1418,10 @@ end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ --- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ ---@param events table list of events 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ ---@param winnr integer window id of preview window 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+----@param bufnrs table list of buffers where the preview window will remain visible 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++---@param floating_bufnr integer floating preview buffer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++---@param bufnr integer buffer that opened the floating preview buffer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ ---@see autocmd-events 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-local function close_preview_autocmd(events, winnr, bufnrs) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++local function close_preview_autocmd(events, winnr, floating_bufnr, bufnr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   local augroup = api.nvim_create_augroup('nvim.preview_window_' .. winnr, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     clear = true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -1429,13 +1430,13 @@ local function close_preview_autocmd(events, winnr, bufnrs) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   -- the floating window buffer or the buffer that spawned it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   api.nvim_create_autocmd('BufLeave', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     group = augroup, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-    buffer = bufnrs[1], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++    buffer = bufnr, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     callback = function() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       vim.schedule(function() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         -- When jumping to the quickfix window from the preview window, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         -- do not close the preview window. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         if api.nvim_get_option_value('filetype', { buf = 0 }) ~= 'qf' then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-          close_preview_window(winnr, bufnrs) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++          close_preview_window(winnr, { floating_bufnr, bufnr }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       end) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     end, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -1444,7 +1445,7 @@ local function close_preview_autocmd(events, winnr, bufnrs) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   if #events > 0 then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     api.nvim_create_autocmd(events, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       group = augroup, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-      buffer = bufnrs[2], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++      buffer = bufnr, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       callback = function() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         close_preview_window(winnr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       end, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -1690,7 +1691,7 @@ function M.open_floating_preview(contents, syntax, opts) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       '<cmd>bdelete<cr>', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       { silent = true, noremap = true, nowait = true } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-    close_preview_autocmd(opts.close_events, floating_winnr, { floating_bufnr, bufnr }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++    close_preview_autocmd(opts.close_events, floating_winnr, floating_bufnr, bufnr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     -- save focus_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     if opts.focus_id then 
			 |