local capabilities = require('cmp_nvim_lsp').default_capabilities() local lsp_on_attach = function(client, bufnr) local aulsp = vim.api.nvim_create_augroup("lsp", {clear = true}) local opts = { buffer = bufnr, noremap = true, silent = true } require('gitsigns').setup() vim.keymap.set('n', 'gd', require('telescope.builtin').lsp_definitions, opts) vim.keymap.set('n', '', require('telescope.builtin').lsp_definitions, opts) vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) vim.keymap.set('n', 'gr', require('telescope.builtin').lsp_references, opts) vim.keymap.set('n', 'gR', vim.lsp.buf.rename, opts) vim.keymap.set('n', 'gi', require('telescope.builtin').lsp_implementations, opts) vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) vim.keymap.set('n', '', vim.diagnostic.setqflist, opts) vim.keymap.set('n', '=', vim.lsp.buf.format, opts) vim.keymap.set('n', '', vim.lsp.buf.format, opts) vim.keymap.set('i', '', vim.lsp.buf.signature_help, opts) end -- Rust require('rust-tools').setup({ server = { capabilities = capabilities, on_attach = function(client, bufnr) lsp_on_attach(client, bufnr) vim.opt.makeprg = 'cargo build' vim.cmd([[setlocal errorformat= \%-G, \%-Gerror:\ aborting\ %.%#, \%-Gerror:\ Could\ not\ compile\ %.%#, \%Eerror:\ %m, \%Eerror[E%n]:\ %m, \%Wwarning:\ %m, \%Inote:\ %m, \%C\ %#-->\ %f:%l:%c, \%E\ \ left:%m,%C\ right:%m\ %f:%l:%c,%Z, \%-G%\\s%#Downloading%.%#, \%-G%\\s%#Compiling%.%#, \%-G%\\s%#Finished%.%#, \%-G%\\s%#error:\ Could\ not\ compile\ %.%#, \%-G%\\s%#To\ learn\ more\\,%.%#, \%-Gnote:\ Run\ with\ \`RUST_BACKTRACE=%.%#, \%.%#panicked\ at\ \\'%m\\'\\,\ %f:%l:%c ]]) end } }) -- Go require('lspconfig')['gopls'].setup { capabilities = capabilities, cmd = { "gopls", "serve" }, settings = { gopls = { analyses = { unusedparams = true, }, staticcheck = true, }, }, on_attach = lsp_on_attach, } require('lspconfig')['clangd'].setup { capabilities = capabilities, on_attach = lsp_on_attach, } require('lspconfig')['pylsp'].setup { capabilities = capabilities, on_attach = lsp_on_attach, } require('lspconfig')['ocamllsp'].setup { capabilities = capabilities, on_attach = lsp_on_attach, } require('lspconfig')['zls'].setup { capabilities = capabilities, on_attach = lsp_on_attach, } require('lspconfig')['texlab'].setup { capabilities = capabilities, on_attach = lsp_on_attach, }