neovimのissueで見つけた設定が動かなくなってたので、修正したものをとりいそぎ。
lspから返ってくるresult.diagnostics
をerrorformatに変換してquickfixに渡します。
この設定ではquickfixにもlocationlistにも入れています(欲張りなので)。
lua << EOF
do
local method = "textDocument/publishDiagnostics"
local default_callback = vim.lsp.callbacks[method]
vim.lsp.callbacks[method] = function(err, method, result, client_id)
default_callback(err, method, result, client_id)
if result and result.diagnostics then
for _, v in ipairs(result.diagnostics) do
v.uri = v.uri or result.uri
v.bufnr = vim.uri_to_bufnr(v.uri)
v.lnum = v.range.start.line + 1
v.col = v.range.start.character + 1
v.text = v.message
end
vim.lsp.util.set_qflist(result.diagnostics)
vim.lsp.util.set_loclist(result.diagnostics)
end
end
end
EOF
nvimのbuiltin lsp、なんか異様に速い気がするのでよいですね。