blob: 8f728f012167537cd4f51bd5196ca749e5f789e2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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;
})
|