setup-cockpit/roles/neovim/files/after/plugin/lsp.lua

112 lines
3.1 KiB
Lua

-- LSP Servers
local attach_fn = function()
vim.keymap.set('n', 'K', vim.lsp.buf.hover, { buffer = 0, remap = false })
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { buffer = 0, remap = false })
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, { buffer = 0, remap = false })
vim.keymap.set('n', 'gT', vim.lsp.buf.type_definition, { buffer = 0, remap = false })
vim.keymap.set('n', '<leader>r', vim.lsp.buf.rename, { buffer = 0, remap = false })
vim.keymap.set('n', '<F9>', vim.lsp.buf.format, { buffer = 0, remap = false })
vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, { buffer = 0, remap = false })
vim.keymap.set('n', '<leader>dj', vim.diagnostic.goto_next, { buffer = 0, remap = false })
vim.keymap.set('n', '<leader>dk', vim.diagnostic.goto_prev, { buffer = 0, remap = false })
vim.keymap.set('n', '<leader>dh', vim.diagnostic.hide, { buffer = 0, remap = false })
vim.keymap.set('n', '<leader>vd', vim.diagnostic.open_float, { buffer = 0, remap = false })
vim.keymap.set('n', '<leader>dl', '<cmd>Telescope diagnostics<CR>', { buffer = 0, remap = false })
end
local lspconfig = require'lspconfig'
local capabilities = require('cmp_nvim_lsp').default_capabilities()
-- General purpose diagnostics
local diagnosticls = require'diagnosticls'
lspconfig.diagnosticls.setup {
capabilities = capabilities,
on_attach = attach_fn,
filetypes = {
'python',
unpack(diagnosticls.filetypes),
},
init_options = {
linters = vim.tbl_deep_extend("force", diagnosticls.linters, {
}),
formatters = diagnosticls.formatters,
filetypes = {
python = { 'flake8', 'mypy', 'pylint' },
},
formatFiletypes = {
python = { 'isort', 'black' },
}
},
}
-- Ansible
lspconfig.ansiblels.setup {
capabilities = capabilities,
on_attach = attach_fn,
}
-- Bash
lspconfig.bashls.setup {
capabilities = capabilities,
on_attach = attach_fn,
}
-- C
lspconfig.clangd.setup {
capabilities = capabilities,
on_attach = attach_fn,
}
-- LaTeX
lspconfig.texlab.setup {
capabilities = capabilities,
on_attach = attach_fn,
settings = {
texlab = {
chktex = {
onEdit = true,
onOpenAndSave = true
},
},
},
}
-- Lua
lspconfig.lua_ls.setup {
capabilities = capabilities,
on_attach = attach_fn,
settings = {
Lua = {
runtime = {
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = 'LuaJIT',
},
diagnostics = {
-- Get the language server to recognize the `vim` global
globals = { 'vim' },
disable = { 'lowercase-global' },
},
workspace = {
-- Make the server aware of Neovim runtime files
library = vim.api.nvim_get_runtime_file("", true),
},
-- Do not send telemetry data containing a randomized but unique identifier
telemetry = {
enable = false,
},
},
},
}
-- Python
lspconfig.jedi_language_server.setup {
capabilities = capabilities,
on_attach = attach_fn,
}
-- Rust
lspconfig.rust_analyzer.setup{
capabilities = capabilities,
on_attach = attach_fn,
}