require("mason").setup() require("mason-lspconfig").setup() local nvim_lsp = require('lspconfig') -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer local on_attach = function(client, bufnr) local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end --Enable completion triggered by buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') -- Mappings. local opts = { noremap=true, silent=true } -- See `:help vim.lsp.*` for documentation on any of the below functions -- See references buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) -- show documentation buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) -- Rename buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) -- proposions from lsp buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) -- Details on diagnostics buf_set_keymap('n', 'd', 'lua vim.diagnostic.open_float()', opts) -- Cycle over diagnostics buf_set_keymap('n', 'df', 'lua vim.diagnostic.goto_prev()', opts) buf_set_keymap('n', 'dp', 'lua vim.diagnostic.goto_next()', opts) -- Get diagnostic on local list buf_set_keymap('n', 'q', 'lua vim.diagnostic.setloclist()', opts) buf_set_keymap("n", "f", "lua vim.lsp.buf.format()", opts) buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) end -- Use a loop to conveniently call 'setup' on multiple servers and -- map buffer local keybindings when the language server attaches local servers = { "texlab", "pyright", "vuels", "tsserver", "html", "sumneko_lua", "ansiblels", "arduino_language_server", "clangd", } for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup { on_attach = on_attach, flags = { debounce_text_changes = 150, }, } end nvim_lsp.vuels.setup{ on_attach = function(client) client.resolved_capabilities.document_formatting = true end; } nvim_lsp.ltex.setup{ settings = { ltex = { language = "fr", } } }