split the lsp config
This commit is contained in:
parent
0f3ae65892
commit
4978435b1f
@ -1,3 +1,107 @@
|
|||||||
|
on_attach = function(client, bufnr)
|
||||||
|
local function buf_set_option(...)
|
||||||
|
vim.api.nvim_buf_set_option(bufnr, ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
|
||||||
|
vim.api.nvim_buf_set_option(0, 'formatexpr', 'v:lua.vim.lsp.formatexpr()')
|
||||||
|
|
||||||
|
-- Mappings.
|
||||||
|
local tele_builtins = require('telescope.builtin')
|
||||||
|
vim.keymap.set('n', '<space>,', vim.diagnostic.goto_prev,
|
||||||
|
{ noremap = true, silent = false, desc = 'Diag prev', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<space>;', vim.diagnostic.goto_next,
|
||||||
|
{ noremap = true, silent = false, desc = 'Diag next', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<space>a', vim.lsp.buf.code_action,
|
||||||
|
{ noremap = true, silent = false, desc = 'Code action', buffer = bufnr })
|
||||||
|
vim.keymap.set('x', '<space>a', vim.lsp.buf.range_code_action,
|
||||||
|
{ noremap = true, silent = false, desc = 'Code action', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<space>d', tele_builtins.lsp_definitions,
|
||||||
|
{ noremap = true, silent = false, desc = 'Definition', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<space>e', vim.lsp.buf.declaration,
|
||||||
|
{ noremap = true, silent = false, desc = 'Declaration', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<space>h', vim.lsp.buf.hover,
|
||||||
|
{ noremap = true, silent = false, desc = 'Hover', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<space>c', vim.lsp.buf.outgoing_calls,
|
||||||
|
{ noremap = true, silent = false, desc = 'Outgoing calls', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<space>C', vim.lsp.buf.incoming_calls,
|
||||||
|
{ noremap = true, silent = false, desc = 'Incoming calls', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<space>m', vim.lsp.buf.rename,
|
||||||
|
{ noremap = true, silent = false, desc = 'Rename', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<C-t>', tele_builtins.lsp_dynamic_workspace_symbols,
|
||||||
|
{ noremap = true, silent = false, desc = 'Workspace symbols', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition,
|
||||||
|
{ noremap = true, silent = false, desc = 'Type definition', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help,
|
||||||
|
{ noremap = true, silent = false, desc = 'Signature help', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<space>r', tele_builtins.lsp_references,
|
||||||
|
{ noremap = true, silent = false, desc = 'References', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<A-m>', tele_builtins.lsp_document_symbols,
|
||||||
|
{ noremap = true, silent = false, desc = 'References', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<scapce>s', tele_builtins.lsp_dynamic_workspace_symbols,
|
||||||
|
{ noremap = true, silent = false, desc = 'Workspace symbols', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<space>v', function() tele_builtins.diagnostics({ bufnr = 0 }) end,
|
||||||
|
{ noremap = true, silent = false, desc = 'Diagnostics', buffer = bufnr })
|
||||||
|
vim.keymap.set('n', '<A-o>', '<cmd>ClangdSwitchSourceHeader<CR>',
|
||||||
|
{ noremap = true, silent = false, desc = 'Switch Source/Header', buffer = bufnr })
|
||||||
|
|
||||||
|
vim.cmd([[autocmd CursorHold <buffer> lua OpenDiagFloat()]])
|
||||||
|
|
||||||
|
-- Set some keybinds conditional on server capabilities
|
||||||
|
if client.server_capabilities.documentFormattingProvider then
|
||||||
|
vim.keymap.set('n', '<space>f', function()
|
||||||
|
vim.lsp.buf.format({ timeout_ms = 10000 })
|
||||||
|
end,
|
||||||
|
{ noremap = true, silent = false, desc = 'Format file', buffer = bufnr })
|
||||||
|
end
|
||||||
|
if client.server_capabilities.documentRangeFormattingProvider then
|
||||||
|
vim.keymap.set('x', '<space>f', function()
|
||||||
|
vim.lsp.buf.format({ timeout_ms = 10000 })
|
||||||
|
end,
|
||||||
|
{ noremap = true, silent = false, desc = 'Format visual', buffer = bufnr })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Set autocommands conditional on server_capabilities
|
||||||
|
if client.server_capabilities.documentHighlightProvider then
|
||||||
|
local group = vim.api.nvim_create_augroup('lsp_document_highlight', { clear = false })
|
||||||
|
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
|
||||||
|
callback = function()
|
||||||
|
vim.lsp.buf.document_highlight()
|
||||||
|
end,
|
||||||
|
buffer = bufnr,
|
||||||
|
group = group,
|
||||||
|
desc = 'Document Highlight',
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_autocmd('CursorMoved', {
|
||||||
|
callback = function()
|
||||||
|
vim.lsp.buf.clear_references()
|
||||||
|
end,
|
||||||
|
buffer = bufnr,
|
||||||
|
group = group,
|
||||||
|
desc = 'Clear All the References',
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_autocmd({ 'LspDetach' }, {
|
||||||
|
group = group,
|
||||||
|
buffer = bufnr,
|
||||||
|
callback = function()
|
||||||
|
vim.lsp.buf.clear_references()
|
||||||
|
vim.api.nvim_clear_autocmds {
|
||||||
|
group = group,
|
||||||
|
buffer = bufnr
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
require('lsp_signature').on_attach({
|
||||||
|
bind = true, -- This is mandatory, otherwise border config won't get registered.
|
||||||
|
handler_opts = {
|
||||||
|
border = 'single',
|
||||||
|
},
|
||||||
|
hi_parameter = 'IncSearch',
|
||||||
|
}, bufnr)
|
||||||
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'neovim/nvim-lspconfig',
|
'neovim/nvim-lspconfig',
|
||||||
dependencies = {
|
dependencies = {
|
||||||
@ -79,107 +183,6 @@ return {
|
|||||||
vim.diagnostic.open_float({ focusable = false, width = 80 })
|
vim.diagnostic.open_float({ focusable = false, width = 80 })
|
||||||
end
|
end
|
||||||
|
|
||||||
local on_attach = function(client, bufnr)
|
|
||||||
local function buf_set_option(...)
|
|
||||||
vim.api.nvim_buf_set_option(bufnr, ...)
|
|
||||||
end
|
|
||||||
|
|
||||||
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
|
|
||||||
vim.api.nvim_buf_set_option(0, 'formatexpr', 'v:lua.vim.lsp.formatexpr()')
|
|
||||||
|
|
||||||
-- Mappings.
|
|
||||||
local tele_builtins = require('telescope.builtin')
|
|
||||||
vim.keymap.set('n', '<space>,', vim.diagnostic.goto_prev,
|
|
||||||
{ noremap = true, silent = false, desc = 'Diag prev', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<space>;', vim.diagnostic.goto_next,
|
|
||||||
{ noremap = true, silent = false, desc = 'Diag next', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<space>a', vim.lsp.buf.code_action,
|
|
||||||
{ noremap = true, silent = false, desc = 'Code action', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<space>d', tele_builtins.lsp_definitions,
|
|
||||||
{ noremap = true, silent = false, desc = 'Definition', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<space>e', vim.lsp.buf.declaration,
|
|
||||||
{ noremap = true, silent = false, desc = 'Declaration', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<space>h', vim.lsp.buf.hover,
|
|
||||||
{ noremap = true, silent = false, desc = 'Hover', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<space>c', vim.lsp.buf.outgoing_calls,
|
|
||||||
{ noremap = true, silent = false, desc = 'Outgoing calls', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<space>C', vim.lsp.buf.incoming_calls,
|
|
||||||
{ noremap = true, silent = false, desc = 'Incoming calls', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<space>m', vim.lsp.buf.rename,
|
|
||||||
{ noremap = true, silent = false, desc = 'Rename', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<C-t>', tele_builtins.lsp_dynamic_workspace_symbols,
|
|
||||||
{ noremap = true, silent = false, desc = 'Workspace symbols', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition,
|
|
||||||
{ noremap = true, silent = false, desc = 'Type definition', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help,
|
|
||||||
{ noremap = true, silent = false, desc = 'Signature help', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<space>r', tele_builtins.lsp_references,
|
|
||||||
{ noremap = true, silent = false, desc = 'References', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<A-m>', tele_builtins.lsp_document_symbols,
|
|
||||||
{ noremap = true, silent = false, desc = 'References', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<scapce>s', tele_builtins.lsp_dynamic_workspace_symbols,
|
|
||||||
{ noremap = true, silent = false, desc = 'Workspace symbols', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<space>v', function() tele_builtins.diagnostics({ bufnr = 0 }) end,
|
|
||||||
{ noremap = true, silent = false, desc = 'Diagnostics', buffer = bufnr })
|
|
||||||
vim.keymap.set('n', '<A-o>', '<cmd>ClangdSwitchSourceHeader<CR>',
|
|
||||||
{ noremap = true, silent = false, desc = 'Switch Source/Header', buffer = bufnr })
|
|
||||||
|
|
||||||
vim.cmd([[autocmd CursorHold <buffer> lua OpenDiagFloat()]])
|
|
||||||
|
|
||||||
-- Set some keybinds conditional on server capabilities
|
|
||||||
if client.server_capabilities.documentFormattingProvider then
|
|
||||||
vim.keymap.set('n', '<space>f', function()
|
|
||||||
vim.lsp.buf.format({ timeout_ms = 10000 })
|
|
||||||
end,
|
|
||||||
{ noremap = true, silent = false, desc = 'Format file', buffer = bufnr })
|
|
||||||
end
|
|
||||||
if client.server_capabilities.documentRangeFormattingProvider then
|
|
||||||
vim.keymap.set('x', '<space>f', function()
|
|
||||||
vim.lsp.buf.format({ timeout_ms = 10000 })
|
|
||||||
end,
|
|
||||||
{ noremap = true, silent = false, desc = 'Format visual', buffer = bufnr })
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Set autocommands conditional on server_capabilities
|
|
||||||
if client.server_capabilities.documentHighlightProvider then
|
|
||||||
local group = vim.api.nvim_create_augroup('lsp_document_highlight', { clear = false })
|
|
||||||
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
|
|
||||||
callback = function()
|
|
||||||
vim.lsp.buf.document_highlight()
|
|
||||||
end,
|
|
||||||
buffer = bufnr,
|
|
||||||
group = group,
|
|
||||||
desc = 'Document Highlight',
|
|
||||||
})
|
|
||||||
vim.api.nvim_create_autocmd('CursorMoved', {
|
|
||||||
callback = function()
|
|
||||||
vim.lsp.buf.clear_references()
|
|
||||||
end,
|
|
||||||
buffer = bufnr,
|
|
||||||
group = group,
|
|
||||||
desc = 'Clear All the References',
|
|
||||||
})
|
|
||||||
vim.api.nvim_create_autocmd({ 'LspDetach' }, {
|
|
||||||
group = group,
|
|
||||||
buffer = bufnr,
|
|
||||||
callback = function()
|
|
||||||
vim.lsp.buf.clear_references()
|
|
||||||
vim.api.nvim_clear_autocmds {
|
|
||||||
group = group,
|
|
||||||
buffer = bufnr
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
require('lsp_signature').on_attach({
|
|
||||||
bind = true, -- This is mandatory, otherwise border config won't get registered.
|
|
||||||
handler_opts = {
|
|
||||||
border = 'single',
|
|
||||||
},
|
|
||||||
hi_parameter = 'IncSearch',
|
|
||||||
}, bufnr)
|
|
||||||
end
|
|
||||||
|
|
||||||
lspconfig['pyright'].setup {
|
lspconfig['pyright'].setup {
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user