aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/lua/lsp.lua
diff options
context:
space:
mode:
authorLuca Matei Pintilie <lucafulger@gmail.com>2022-09-08 17:29:21 +0000
committerLuca Matei Pintilie <lucafulger@gmail.com>2022-09-08 17:29:21 +0000
commitb57d4cb883e8f016cfbc89c87e6594f0c2aef1ff (patch)
tree39576dcd545bb0a1c41c4af9bdf00d89ebb9198f /.config/nvim/lua/lsp.lua
parentf13e82880cfcb566df62d9d3c787cc021273142e (diff)
downloaddotfiles-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.lua84
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;
+})
+