autoload/lsp/diag.vim | 6 +++++- autoload/lsp/options.vim | 4 +++- diff --git a/autoload/lsp/diag.vim b/autoload/lsp/diag.vim index eb230d40645f0955a84e9f75b6af5ae380a0b9ad..01c56da50074482a607e76adbd0aba5ca1aeb48a 100644 --- a/autoload/lsp/diag.vim +++ b/autoload/lsp/diag.vim @@ -201,7 +201,11 @@ var diag: dict = lspserver.getDiagByLine(bnr, lnum) if diag->empty() util.WarnMsg('No diagnostic messages found for current line') else - echo diag.message + if opt.lspOptions.showDiagInPopup + popup_atcursor(diag.message, { moved: 'any' }) + else + echo diag.message + endif endif enddef diff --git a/autoload/lsp/options.vim b/autoload/lsp/options.vim index c1895469a242e58e02bee63c4ffad403cec4109b..82bf588f7c9ec3a9fc92ecfd26f03d39ed13c412 100644 --- a/autoload/lsp/options.vim +++ b/autoload/lsp/options.vim @@ -33,7 +33,9 @@ noDiagHoverOnLine: true, # Show a diagnostic message on a status line showDiagOnStatusLine: false, # Don't print message when a configured language server is missing. - ignoreMissingServer: false + ignoreMissingServer: false, + # Make diagnostics show in a popup instead of echoing + showDiagInPopup: true } # set LSP options from user provided options