-- Setup nvim-cmp. local cmp = require("cmp") cmp.setup({ snippet = { -- REQUIRED - you must specify a snippet engine expand = function(args) vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. end; }; window = { completion = cmp.config.window.bordered(); documentation = cmp.config.window.bordered(); }; mapping = cmp.mapping.preset.insert({ ["<C-b>"] = cmp.mapping.scroll_docs(-4); ["<C-f>"] = cmp.mapping.scroll_docs(4); ["<C-Space>"] = cmp.mapping.complete(); ["<C-e>"] = cmp.mapping.abort(); ["<CR>"] = cmp.mapping.confirm({ select = true }); -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. }); sources = cmp.config.sources({ { name = "nvim_lsp" }; { name = "vsnip" }; -- For vsnip users. }, { { name = "buffer" } }); }) -- Set configuration for specific filetype. cmp.setup.filetype("gitcommit", { sources = cmp.config.sources({ { name = "cmp_git" }; -- You can specify the `cmp_git` source if you were installed it. }, { { name = "buffer" } }); }) -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline("/", { mapping = cmp.mapping.preset.cmdline(); sources = { { name = "buffer" } }; }) -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline(":", { mapping = cmp.mapping.preset.cmdline(); sources = cmp.config.sources({ { name = "path" } }, { { name = "cmdline" } }); }) -- Setup lspconfig. local capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp .protocol .make_client_capabilities()) require("lspconfig")["denols"].setup { capabilities = capabilities } local lspkind = require("lspkind") cmp.setup { formatting = { format = lspkind.cmp_format({ mode = "symbol"; -- show only symbol annotations maxwidth = 50; -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) -- The function below will be called before any actual modifications from lspkind -- so that you can provide more controls on popup customization. (See [#30](https://github.com/onsails/lspkind-nvim/pull/30)) before = function(entry, vim_item) return vim_item end; }); }; } local on_attach = function(client, bufnr) vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") end require("lspconfig")["tsserver"].setup { on_attach = on_attach } require("lspconfig")["denols"].setup { on_attach = on_attach; init_options = { enable = true; unstable = true; config = "./deno.jsonc" }; root_dir = vim.loop.cwd; } vim.diagnostic.config({ virtual_text = true; signs = true; underline = true; update_in_insert = false; severity_sort = true; })