112 lines
3.1 KiB
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,
|
|
}
|