From: Andreas Louv Date: Wed, 12 Apr 2023 05:58:10 +0000 (+0200) Subject: Make it possible to get diagnostics/line for a single server X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=c6bc48646a02865bfe077389a6ebfb560248c501;p=vim-lsp.git Make it possible to get diagnostics/line for a single server --- diff --git a/autoload/lsp/diag.vim b/autoload/lsp/diag.vim index 45d90b6..2e7c216 100644 --- a/autoload/lsp/diag.vim +++ b/autoload/lsp/diag.vim @@ -484,7 +484,7 @@ export def GetDiagByPos(bnr: number, lnum: number, col: number, enddef # Get all diagnostics from the LSP server for a particular line in a file -export def GetDiagsByLine(bnr: number, lnum: number): list> +export def GetDiagsByLine(bnr: number, lnum: number, lspserver: dict = null_dict): list> if !diagsMap->has_key(bnr) return [] endif @@ -493,11 +493,20 @@ export def GetDiagsByLine(bnr: number, lnum: number): list> var serverDiagsByLnum = diagsMap[bnr].serverDiagnosticsByLnum - for diagsByLnum in serverDiagsByLnum->values() - if diagsByLnum->has_key(lnum) - diags->extend(diagsByLnum[lnum]) + if lspserver == null_dict + for diagsByLnum in serverDiagsByLnum->values() + if diagsByLnum->has_key(lnum) + diags->extend(diagsByLnum[lnum]) + endif + endfor + else + if !serverDiagsByLnum->has_key(lspserver.id) + return [] endif - endfor + if serverDiagsByLnum[lspserver.id]->has_key(lnum) + diags = serverDiagsByLnum[lspserver.id][lnum] + endif + endif return diags->sort((a, b) => { return a.range.start.character - b.range.start.character diff --git a/autoload/lsp/lspserver.vim b/autoload/lsp/lspserver.vim index 3e87840..01c1d06 100644 --- a/autoload/lsp/lspserver.vim +++ b/autoload/lsp/lspserver.vim @@ -1164,7 +1164,7 @@ def CodeAction(lspserver: dict, fname_arg: string, line1: number, params->extend({textDocument: {uri: util.LspFileToUri(fname)}, range: r}) var d: list> = [] for lnum in range(line1, line2) - var diagsInfo: list> = diag.GetDiagsByLine(bnr, lnum) + var diagsInfo: list> = diag.GetDiagsByLine(bnr, lnum, lspserver) d->extend(diagsInfo) endfor params->extend({context: {diagnostics: d, triggerKind: 1}})