autoload/lsp/diag.vim | 3 +-- test/clangd_tests.vim | 14 ++++++++++++++ diff --git a/autoload/lsp/diag.vim b/autoload/lsp/diag.vim index a0dede44ec965a3f1ee197ad4e044d139d77ecae..8f8e08d15ac73280f22edf7bab76e5efc3777c8e 100644 --- a/autoload/lsp/diag.vim +++ b/autoload/lsp/diag.vim @@ -410,13 +410,12 @@ # Display the diagnostic messages from the LSP server for the current buffer # in a location list export def ShowAllDiags(): void - var save_winid = win_getid() - if !DiagsUpdateLocList(bufnr()) util.WarnMsg($'No diagnostic messages found for {@%}') return endif + var save_winid = win_getid() :lopen if !opt.lspOptions.keepFocusInDiags save_winid->win_gotoid() diff --git a/test/clangd_tests.vim b/test/clangd_tests.vim index fe7c9474dbb4dcf57efb4342abf850c840b9906a..5b7398788f0ce3bba66bd78eabc04dd1d51d90fc 100644 --- a/test/clangd_tests.vim +++ b/test/clangd_tests.vim @@ -202,6 +202,13 @@ assert_equal([1, 5], [qfl[0].lnum, qfl[0].col]) :cclose g:LspOptionsSet({ useQuickfixForLocations: false }) + # Test for moving buffer focus to loclist + g:LspOptionsSet({ keepFocusInReferences: true }) + :LspShowReferences + assert_equal('quickfix', getwinvar(0, '&buftype')) + :lclose + g:LspOptionsSet({ keepFocusInReferences: false }) + # Test for LspPeekReferences # Opening the preview window with an unsaved buffer displays the "E37: No @@ -286,6 +293,13 @@ :LspDiagPrev :LspDiagPrev output = execute('LspDiagPrev')->split("\n") assert_equal('Warn: No more diagnostics found', output[0]) + + # Test for maintaining buffer focus + g:LspOptionsSet({ keepFocusInDiags: false }) + :LspDiagShow + assert_equal('', getwinvar(0, '&buftype')) + :lclose + g:LspOptionsSet({ keepFocusInDiags: true }) # :[count]LspDiagNext cursor(3, 1)