fix(diagnostic): preserve fields from LSP diagnostics via user_data (#15735)

* preserve fields from LSP diagnostics via adding a user_data table to the diagnostic, which can hold arbitrary data in addition to the lsp diagnostic information.
This commit is contained in:
Gregory Anders
2021-09-21 16:27:12 -06:00
committed by GitHub
parent 8164adc144
commit 17b7968f02
2 changed files with 38 additions and 3 deletions

View File

@@ -102,7 +102,16 @@ local function diagnostic_lsp_to_vim(diagnostics, bufnr, client_id)
end_lnum = _end.line,
end_col = line_byte_from_position(buf_lines, _end.line, _end.character, offset_encoding),
severity = severity_lsp_to_vim(diagnostic.severity),
message = diagnostic.message
message = diagnostic.message,
user_data = {
lsp = {
code = diagnostic.code,
codeDescription = diagnostic.codeDescription,
tags = diagnostic.tags,
relatedInformation = diagnostic.relatedInformation,
data = diagnostic.data,
},
},
}
end, diagnostics)
end
@@ -110,7 +119,7 @@ end
---@private
local function diagnostic_vim_to_lsp(diagnostics)
return vim.tbl_map(function(diagnostic)
return {
return vim.tbl_extend("error", {
range = {
start = {
line = diagnostic.lnum,
@@ -123,7 +132,7 @@ local function diagnostic_vim_to_lsp(diagnostics)
},
severity = severity_vim_to_lsp(diagnostic.severity),
message = diagnostic.message,
}
}, diagnostic.user_data and (diagnostic.user_data.lsp or {}) or {})
end, diagnostics)
end