41 lines
1.5 KiB
Lua
41 lines
1.5 KiB
Lua
-- Set keymaps
|
|
vim.api.nvim_create_autocmd('LspAttach', {
|
|
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
|
|
callback = function(ev)
|
|
local opts = { buffer = ev.buf }
|
|
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
|
|
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
|
|
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
|
|
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
|
|
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
|
|
vim.keymap.set('n', '<leader>r', vim.lsp.buf.rename, opts)
|
|
vim.keymap.set('n', '<leader>a', vim.lsp.buf.code_action, opts)
|
|
vim.keymap.set('n', '<leader>n', vim.diagnostic.goto_next, opts)
|
|
vim.keymap.set('n', '<leader>p', vim.diagnostic.goto_prev, opts)
|
|
end,
|
|
})
|
|
|
|
-- Show diagnostics in bordered pop-up
|
|
vim.diagnostic.config { virtual_text = false, float = { border = 'rounded' } }
|
|
vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(
|
|
vim.lsp.handlers.hover, { border = 'rounded' }
|
|
)
|
|
vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(
|
|
vim.lsp.handlers.signature_help, { border = 'rounded' }
|
|
)
|
|
vim.o.updatetime = 500
|
|
vim.api.nvim_create_autocmd({'CursorHold'}, {
|
|
pattern = {'*'},
|
|
callback = function(ev)
|
|
vim.diagnostic.open_float(nil, { focus = false })
|
|
end,
|
|
})
|
|
|
|
-- Set diagnostic signs
|
|
local signs = { Error = ' ', Warning = ' ', Hint = ' ', Information = ' ' }
|
|
for type, icon in pairs(signs) do
|
|
local hl = 'DiagnosticSign' .. type
|
|
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
|
|
end
|
|
|