@@ -273,7 +273,7 @@ function! s:CloseFloatingHoverOnCursorMove(win_id, opened) abort
273
273
" was really moved
274
274
return
275
275
endif
276
- autocmd ! plugin - LC- neovim- close - hover
276
+ silent ! autocmd ! plugin - LC- neovim- close - hover
277
277
let winnr = win_id2win (a: win_id )
278
278
if winnr == 0
279
279
return
@@ -285,7 +285,7 @@ function! s:CloseFloatingHoverOnBufEnter(win_id, bufnr) abort
285
285
let winnr = win_id2win (a: win_id )
286
286
if winnr == 0
287
287
" Float window was already closed
288
- autocmd ! plugin - LC- neovim- close - hover
288
+ silent ! autocmd ! plugin - LC- neovim- close - hover
289
289
return
290
290
endif
291
291
if winnr == winnr ()
@@ -296,7 +296,7 @@ function! s:CloseFloatingHoverOnBufEnter(win_id, bufnr) abort
296
296
" When current buffer opened hover window, it's not another buffer. Skipped
297
297
return
298
298
endif
299
- autocmd ! plugin - LC- neovim- close - hover
299
+ silent ! autocmd ! plugin - LC- neovim- close - hover
300
300
execute winnr . ' wincmd c'
301
301
endfunction
302
302
@@ -388,17 +388,22 @@ function! s:OpenHoverPreview(bufname, lines, filetype) abort
388
388
endif
389
389
endfunction
390
390
391
- function ! s: MoveIntoHoverPreview () abort
391
+ function ! s: GetHoverPreviewBufnr () abort
392
392
for bufnr in range (1 , bufnr (' $' ))
393
393
if bufname (bufnr ) == # ' __LanguageClient__'
394
- let winnr = bufwinnr (bufnr )
395
- if winnr != -1
396
- execute winnr . ' wincmd w'
397
- endif
398
- return v: true
394
+ return bufnr
399
395
endif
400
396
endfor
401
- return v: false
397
+ return -1
398
+ endfunction
399
+
400
+ function ! s: MoveIntoHoverPreview () abort
401
+ let winnr = bufwinnr (s: GetHoverPreviewBufnr ())
402
+ if winnr == -1
403
+ return v: false
404
+ endif
405
+ execute winnr . ' wincmd w'
406
+ return v: true
402
407
endfunction
403
408
404
409
let s: id = 1
@@ -1294,4 +1299,30 @@ function! LanguageClient#debugInfo(...) abort
1294
1299
return LanguageClient#Call (' languageClient/debugInfo' , l: params , l: Callback )
1295
1300
endfunction
1296
1301
1302
+ function ! LanguageClient#openHoverInSeparateWindow () abort
1303
+ let bufnr = s: GetHoverPreviewBufnr ()
1304
+ if bufnr == -1
1305
+ echo ' No hover found'
1306
+ return
1307
+ endif
1308
+
1309
+ let lines = nvim_buf_get_lines (bufnr , 1 , -1 , v: false )
1310
+ let filetype = nvim_buf_get_option (bufnr , ' filetype' )
1311
+ let name = bufname (bufnr )
1312
+
1313
+ silent ! autocmd ! plugin - LC- neovim- close - hover
1314
+ let winnr = bufwinnr (bufnr )
1315
+ if winnr != -1
1316
+ execute winnr . ' wincmd c'
1317
+ endif
1318
+
1319
+ execute ' silent! noswapfile pedit!' name
1320
+ wincmd P
1321
+ setlocal buftype = nofile nobuflisted bufhidden = wipe nonumber norelativenumber signcolumn = no
1322
+ let &filetype = filetype
1323
+ call setline (1 , lines )
1324
+ setlocal nomodified nomodifiable
1325
+ wincmd p
1326
+ endfunction
1327
+
1297
1328
let g: LanguageClient_loaded = s: Launch ()
0 commit comments