diff options
author | Luca Matei Pintilie <lucafulger@gmail.com> | 2022-09-08 17:29:21 +0000 |
---|---|---|
committer | Luca Matei Pintilie <lucafulger@gmail.com> | 2022-09-08 17:29:21 +0000 |
commit | b57d4cb883e8f016cfbc89c87e6594f0c2aef1ff (patch) | |
tree | 39576dcd545bb0a1c41c4af9bdf00d89ebb9198f /.config/nvim/lua/lsp.lua | |
parent | f13e82880cfcb566df62d9d3c787cc021273142e (diff) | |
download | dotfiles-b57d4cb883e8f016cfbc89c87e6594f0c2aef1ff.tar dotfiles-b57d4cb883e8f016cfbc89c87e6594f0c2aef1ff.tar.gz dotfiles-b57d4cb883e8f016cfbc89c87e6594f0c2aef1ff.tar.bz2 dotfiles-b57d4cb883e8f016cfbc89c87e6594f0c2aef1ff.tar.lz dotfiles-b57d4cb883e8f016cfbc89c87e6594f0c2aef1ff.tar.xz dotfiles-b57d4cb883e8f016cfbc89c87e6594f0c2aef1ff.tar.zst dotfiles-b57d4cb883e8f016cfbc89c87e6594f0c2aef1ff.zip |
New neovim config
Diffstat (limited to '.config/nvim/lua/lsp.lua')
-rw-r--r-- | .config/nvim/lua/lsp.lua | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/.config/nvim/lua/lsp.lua b/.config/nvim/lua/lsp.lua new file mode 100644 index 0000000..8f728f0 --- /dev/null +++ b/.config/nvim/lua/lsp.lua @@ -0,0 +1,84 @@ +-- 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; +}) + |