aboutsummaryrefslogtreecommitdiffstats
path: root/after/plugin/cmp.lua
diff options
context:
space:
mode:
authorAriel D'Alessandro <dalessandro.ariel@gmail.com>2022-07-10 19:34:48 +0200
committerAriel D'Alessandro <dalessandro.ariel@gmail.com>2022-07-10 19:34:57 +0200
commit6e788a6e4e78d7557840f504847754fae22269f3 (patch)
tree727a203fffa422b93db8b70bd935cc1ada1b6981 /after/plugin/cmp.lua
parentb65f8c6c939139d5aeafef381517f894608ef518 (diff)
downloadnvim-conf-6e788a6e4e78d7557840f504847754fae22269f3.tar.gz
nvim-conf-6e788a6e4e78d7557840f504847754fae22269f3.zip
refactor, and change colors
Diffstat (limited to 'after/plugin/cmp.lua')
-rw-r--r--after/plugin/cmp.lua131
1 files changed, 131 insertions, 0 deletions
diff --git a/after/plugin/cmp.lua b/after/plugin/cmp.lua
new file mode 100644
index 0000000..ffafe96
--- /dev/null
+++ b/after/plugin/cmp.lua
@@ -0,0 +1,131 @@
+local ok, cmp = pcall(require, "cmp")
+if not ok then
+ return
+end
+
+local _ = require("alpha.colors")
+
+local lspkind = require("lspkind")
+local luasnip = require("luasnip")
+local cmp_autopairs = require("nvim-autopairs.completion.cmp")
+
+cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done({ map_char = { tex = "" } }))
+
+cmp.setup({
+ mapping = {
+ ["<C-d>"] = cmp.mapping.scroll_docs(-4),
+ ["<C-f>"] = cmp.mapping.scroll_docs(4),
+ ["<C-e>"] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.close()
+ elseif luasnip.expand_or_jumpable() then
+ luasnip.expand_or_jump()
+ else
+ fallback()
+ end
+ end, { "i", "s" }),
+ ["<C-n>"] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_next_item()
+ elseif luasnip.choice_active() then
+ luasnip.change_choice(1)
+ else
+ fallback()
+ end
+ end, { "i", "s" }),
+ ["<C-p>"] = cmp.mapping.select_prev_item(),
+ ["<C-y>"] = cmp.mapping.confirm({
+ behavior = cmp.ConfirmBehavior.Insert,
+ select = true,
+ }),
+ ["<c-space>"] = cmp.mapping.complete(),
+ },
+ sources = {
+ { name = "nvim_lua" },
+ { name = "nvim_lsp" },
+ { name = "path" },
+ { name = "luasnip" },
+ {
+ name = "buffer",
+ keyword_length = 5,
+ option = {
+ get_bufnrs = function()
+ local bufs = {}
+ for _, win in ipairs(vim.api.nvim_list_wins()) do
+ bufs[vim.api.nvim_win_get_buf(win)] = true
+ end
+ return vim.tbl_keys(bufs)
+ end,
+ },
+ },
+ },
+
+ snippet = {
+ expand = function(args)
+ require("luasnip").lsp_expand(args.body)
+ end,
+ },
+
+ formatting = {
+ format = lspkind.cmp_format({
+ with_text = true,
+ menu = {
+ buffer = "[buf]",
+ nvim_lsp = "[LSP]",
+ nvim_lua = "[api]",
+ path = "[path]",
+ luasnip = "[snip]",
+ ["vim-dadbod-completion"] = "[DB]",
+ },
+ }),
+ },
+
+ experimental = {
+ native_menu = false,
+
+ ghost_text = true,
+ },
+})
+
+-- 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" },
+ }),
+})
+
+cmp.setup.filetype({ "sql", "mysql", "plsql" }, {
+ sources = cmp.config.sources({
+ { name = "vim-dadbod-completion" },
+ }, {
+ { name = "buffer" },
+ }),
+})
+
+-- Setup lspconfig.
+local capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities())
+-- Replace <YOUR_LSP_SERVER> with each lsp server you've enabled.
+require("lspconfig")["emmet_ls"].setup({
+ capabilities = capabilities,
+})
+