-- 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({ [""] = cmp.mapping.scroll_docs(-4); [""] = cmp.mapping.scroll_docs(4); [""] = cmp.mapping.complete(); [""] = cmp.mapping.abort(); [""] = 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") require("lsp-inlayhints").setup() require("lsp-inlayhints").on_attach(client, bufnr) end -- Enable (broadcasting) snippet capability for completion local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities.textDocument.completion.completionItem.snippetSupport = true local lsputils = require("lspconfig").util require("lspconfig").tsserver.setup({ on_attach = on_attach; root_dir = lsputils.root_pattern("package.json", "tsconfig.json", "jsconfig.json"); }) require("lspconfig").denols.setup { on_attach = on_attach; init_options = { enable = true; unstable = true; config = "./deno.jsonc" }; root_dir = vim.loop.cwd; } require("lspconfig").rust_analyzer.setup({ root_dir = vim.loop.cwd; on_attach = on_attach; }) require("lspconfig").sqls.setup({ on_attach = function(client, bufnr) require("sqls").on_attach(client, bufnr) on_attach(client, bufnr) end; }) -- neovim-bin require"lspconfig".omnisharp.setup { cmd = { "omnisharp" }; on_attach = on_attach; -- Enables support for reading code style, naming convention and analyzer -- settings from .editorconfig. enable_editorconfig_support = true; -- If true, MSBuild project system will only load projects for files that -- were opened in the editor. This setting is useful for big C# codebases -- and allows for faster initialization of code navigation features only -- for projects that are relevant to code that is being edited. With this -- setting enabled OmniSharp may load fewer projects and may thus display -- incomplete reference lists for symbols. enable_ms_build_load_projects_on_demand = false; -- Enables support for roslyn analyzers, code fixes and rulesets. enable_roslyn_analyzers = false; -- Specifies whether 'using' directives should be grouped and sorted during -- document formatting. organize_imports_on_format = false; -- Enables support for showing unimported types and unimported extension -- methods in completion lists. When committed, the appropriate using -- directive will be added at the top of the current file. This option can -- have a negative impact on initial completion responsiveness, -- particularly for the first few completion sessions after opening a -- solution. enable_import_completion = false; -- Specifies whether to include preview versions of the .NET SDK when -- determining which version to use for project loading. sdk_include_prereleases = true; -- Only run analyzers against open files when 'enableRoslynAnalyzers' is -- true analyze_open_documents_only = false; } require("lspconfig").marksman.setup({ root_dir = vim.loop.cwd; on_attach = on_attach; }) require("lspconfig").jsonls.setup({ capabilities = capabilities; cmd = { "vscode-json-languageserver"; "--stdio" }; on_attach = on_attach; }) require("lspconfig").html.setup({ capabilities = capabilities; cmd = { "vscode-html-languageserver"; "--stdio" }; on_attach = on_attach; }) require("lspconfig").cssls.setup({ capabilities = capabilities; on_attach = on_attach; }) vim.diagnostic.config({ virtual_text = false; signs = true; underline = true; update_in_insert = false; severity_sort = true; })