54 lines
1.4 KiB
Lua
54 lines
1.4 KiB
Lua
local M = {}
|
|
|
|
function M.setup()
|
|
-- Signs
|
|
local signs = { Error = '', Warn = '', Hint = '', Info = '' }
|
|
for type, icon in pairs(signs) do
|
|
local hl = 'DiagnosticSign' .. type
|
|
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
|
|
end
|
|
|
|
-- Floating window borders
|
|
local border = {
|
|
{ '╭', 'FloatBorder' },
|
|
{ '─', 'FloatBorder' },
|
|
{ '╮', 'FloatBorder' },
|
|
{ '│', 'FloatBorder' },
|
|
{ '╯', 'FloatBorder' },
|
|
{ '─', 'FloatBorder' },
|
|
{ '╰', 'FloatBorder' },
|
|
{ '│', 'FloatBorder' },
|
|
}
|
|
local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview
|
|
function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...)
|
|
opts = opts or {}
|
|
opts.border = opts.border or border
|
|
return orig_util_open_floating_preview(contents, syntax, opts, ...)
|
|
end
|
|
end
|
|
|
|
function M.on_attach(client, bufnr)
|
|
-- Highlight references
|
|
if client.server_capabilities.documentHighlightProvider then
|
|
vim.api.nvim_create_augroup('lsp_document_highlight', {
|
|
clear = false,
|
|
})
|
|
vim.api.nvim_clear_autocmds {
|
|
group = 'lsp_document_highlight',
|
|
buffer = bufnr,
|
|
}
|
|
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
|
|
group = 'lsp_document_highlight',
|
|
buffer = bufnr,
|
|
callback = vim.lsp.buf.document_highlight,
|
|
})
|
|
vim.api.nvim_create_autocmd('CursorMoved', {
|
|
group = 'lsp_document_highlight',
|
|
buffer = bufnr,
|
|
callback = vim.lsp.buf.clear_references,
|
|
})
|
|
end
|
|
end
|
|
|
|
return M
|