" nvim-lspconfig sign define DiagnosticSignError text= texthl=DiagnosticSignError linehl= numhl= sign define DiagnosticSignWarn text= texthl=DiagnosticSignWarn linehl= numhl= sign define DiagnosticSignInfo text= texthl=DiagnosticSignInfo linehl= numhl= sign define DiagnosticSignHint text= texthl=DiagnosticSignHint linehl= numhl= set completeopt=menuone,noinsert,noselect lua << EOF lsp_mappings = function(bufnr) local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end -- Mappings. local opts = { noremap=true, silent=true } 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", "K", "lua vim.lsp.buf.hover()", opts) buf_set_keymap("n", "gi", "lua vim.lsp.buf.implementation()", opts) buf_set_keymap("n", "", "lua vim.lsp.buf.signature_help()", opts) buf_set_keymap("n", "wa", "lua vim.lsp.buf.add_workspace_folder()", opts) buf_set_keymap("n", "wr", "lua vim.lsp.buf.remove_workspace_folder()", opts) buf_set_keymap("n", "wl", "lua vim.pretty_print(vim.lsp.buf.list_workspace_folders())", opts) buf_set_keymap("n", "D", "lua vim.lsp.buf.type_definition()", opts) buf_set_keymap("n", "rn", "lua vim.lsp.buf.rename()", opts) buf_set_keymap("n", "gr", "lua vim.lsp.buf.references()", opts) buf_set_keymap("n", "g0", "lua vim.lsp.buf.document_symbol()", opts) buf_set_keymap("n", "gW", "lua vim.lsp.buf.workspace_symbol()", opts) buf_set_keymap("n", "e", "lua vim.diagnostic.open_float()", opts) buf_set_keymap("n", "[d", "lua vim.diagnostic.goto_prev()", opts) buf_set_keymap("n", "]d", "lua vim.diagnostic.goto_next()", opts) buf_set_keymap("n", "q", "lua vim.diagnostic.setloclist()", opts) end EOF " lspkind-nvim lua cmp_format = require("lspkind").cmp_format { \ mode = "symbol", \ preset = "codicons", \ menu = {nvim_lsp = "[LSP]", buffer = "[Buffer]", path = "[Path]"} \ } lua << EOF local nvim_lsp = require("lspconfig") local on_attach = function(client, bufnr) vim.api.nvim_create_autocmd("CursorHoldI", { buffer = bufnr, callback = function() vim.diagnostic.open_float({ focusable = false, header = "" }) end }) vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( vim.lsp.diagnostic.on_publish_diagnostics, { update_in_insert = true, virtual_text = { spacing = 24 } } ) local cmp = require("cmp") cmp.setup { mapping = { [""] = cmp.mapping.select_next_item { behavior = cmp.SelectBehavior.Insert }, [""] = cmp.mapping.select_prev_item { behavior = cmp.SelectBehavior.Insert }, }, formatting = {format = cmp_format}, sources = { {name = "nvim_lsp"}, {name = "buffer", keyword_length = 5}, {name = "path"} }, experimental = {ghost_text = true}, } lsp_mappings(bufnr) end local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) local settings = require("lsp_server_settings") local servers = {"pylsp", "clangd"} for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup {on_attach=on_attach, settings={[lsp]=settings[lsp]}, capabilities=capabilities} end EOF " nvim-cmp autocmd FileType gitcommit lua require("cmp").setup.buffer { \ sources = { \ { name = "spell" }, \ { name = "buffer", keyword_length = 5 }, \ { name = "path" }, \ }, \ }