feat: LSP for Luau and diagnostics keymap
This commit is contained in:
parent
5fe1909b08
commit
57216b2013
3 changed files with 110 additions and 1 deletions
57
.config/nvim/lua/null/lsp-diagnostics.lua
Normal file
57
.config/nvim/lua/null/lsp-diagnostics.lua
Normal file
|
@ -0,0 +1,57 @@
|
|||
-- REF: https://github.com/lukas-reineke/dotfiles/blob/master/vim/lua/lsp/diagnostics.lua
|
||||
|
||||
local M = {}
|
||||
|
||||
local serverity_map = {
|
||||
"DiagnosticError",
|
||||
"DiagnosticWarn",
|
||||
"DiagnosticInfo",
|
||||
"DiagnosticHint",
|
||||
}
|
||||
local icon_map = {
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
}
|
||||
|
||||
local function source_string(source, code)
|
||||
if code then
|
||||
return string.format(" [%s %s]", source, code)
|
||||
else
|
||||
return string.format(" [%s]", source)
|
||||
end
|
||||
end
|
||||
|
||||
M.line_diagnostics = function()
|
||||
local bufnr, lnum = unpack(vim.fn.getcurpos())
|
||||
local diagnostics = vim.diagnostic.get(bufnr, { lnum = lnum - 1, })
|
||||
if vim.tbl_isempty(diagnostics) then
|
||||
return
|
||||
end
|
||||
|
||||
local lines = {}
|
||||
|
||||
for _, diagnostic in ipairs(diagnostics) do
|
||||
table.insert(
|
||||
lines,
|
||||
icon_map[diagnostic.severity]
|
||||
.. " "
|
||||
.. diagnostic.message:gsub("\n", " ")
|
||||
.. source_string(diagnostic.source, diagnostic.code)
|
||||
)
|
||||
end
|
||||
|
||||
local floating_bufnr, _ = vim.lsp.util.open_floating_preview(lines, "plaintext", {
|
||||
border = vim.g.floating_window_border_dark,
|
||||
focus_id = "line",
|
||||
})
|
||||
|
||||
for i, diagnostic in ipairs(diagnostics) do
|
||||
local message_length = #lines[i] - #source_string(diagnostic.source, diagnostic.code)
|
||||
vim.api.nvim_buf_add_highlight(floating_bufnr, -1, serverity_map[diagnostic.severity], i - 1, 0, message_length)
|
||||
vim.api.nvim_buf_add_highlight(floating_bufnr, -1, "DiagnosticSource", i - 1, message_length, -1)
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
Loading…
Add table
Add a link
Reference in a new issue