lsp: Set diagnostic relatedInformation

This commit is contained in:
James Westman 2022-05-27 15:27:47 -05:00
parent d987b15374
commit aca8dd794b
No known key found for this signature in database
GPG key ID: CE2DBA0ADB654EA6

View file

@ -245,7 +245,7 @@ class LanguageServer:
{ {
"title": action.title, "title": action.title,
"kind": "quickfix", "kind": "quickfix",
"diagnostics": [self._create_diagnostic(open_file.text, diagnostic)], "diagnostics": [self._create_diagnostic(open_file.text, open_file.uri, diagnostic)],
"edit": { "edit": {
"changes": { "changes": {
open_file.uri: [{ open_file.uri: [{
@ -266,21 +266,30 @@ class LanguageServer:
def _send_file_updates(self, open_file: OpenFile): def _send_file_updates(self, open_file: OpenFile):
self._send_notification("textDocument/publishDiagnostics", { self._send_notification("textDocument/publishDiagnostics", {
"uri": open_file.uri, "uri": open_file.uri,
"diagnostics": [self._create_diagnostic(open_file.text, err) for err in open_file.diagnostics], "diagnostics": [self._create_diagnostic(open_file.text, open_file.uri, err) for err in open_file.diagnostics],
}) })
def _create_diagnostic(self, text, err): def _create_diagnostic(self, text, uri, err):
if isinstance(err, CompileWarning): result = {
severity = DiagnosticSeverity.Warning
else:
severity = DiagnosticSeverity.Error
return {
"range": utils.idxs_to_range(err.start, err.end, text), "range": utils.idxs_to_range(err.start, err.end, text),
"message": err.message, "message": err.message,
"severity": severity, "severity": DiagnosticSeverity.Warning if isinstance(err, CompileWarning) else DiagnosticSeverity.Error,
} }
if len(err.references) > 0:
result["relatedInformation"] = [
{
"location": {
"uri": uri,
"range": utils.idxs_to_range(ref.start, ref.end, text),
},
"message": ref.message
}
for ref in err.references
]
return result
for name in dir(LanguageServer): for name in dir(LanguageServer):
item = getattr(LanguageServer, name) item = getattr(LanguageServer, name)