From ee4f78902be397e1d4d84bf317f275220da16039 Mon Sep 17 00:00:00 2001 From: pro100ton Date: Fri, 31 Jan 2025 23:12:43 +0300 Subject: [PATCH] Add nvim-cmp basic config --- lua/custom/completion.lua | 43 +++++++++++++++++++++++++++++++ lua/custom/plugins/completion.lua | 19 ++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 lua/custom/completion.lua create mode 100644 lua/custom/plugins/completion.lua diff --git a/lua/custom/completion.lua b/lua/custom/completion.lua new file mode 100644 index 0000000..72cb31e --- /dev/null +++ b/lua/custom/completion.lua @@ -0,0 +1,43 @@ +-- Set some settings for competion +-- For more info type `:help completeopt` +-- menu: Show menu when completions available (more than 1) +-- menuone: Show menu even when there is only 1 option +-- noselect: Force user to select convinient option +vim.opt.completeopt = { "menu", "menuone", "noselect" } + +local lspkind = require "lspkind" + +local kind_formatter = lspkind.cmp_format { + mode = "symbol_text", + menu = { + buffer = "[buf]", + nvim_lsp = "[LSP]", + nvim_lua = "[api]", + path = "[path]", + luasnip = "[snip]", + gh_issues = "[issues]", + tn = "[TabNine]", + eruby = "[erb]", + }, +} + +local cmp = require "cmp" + +cmp.setup { + sources = { + { name = "nvim_lsp" }, + { name = "path" }, + { name = "buffer" }, + }, + mapping = { + [""] = cmp.mapping.select_next_item { behavior = cmp.SelectBehavior.Insert }, + [""] = cmp.mapping.select_prev_item { behavior = cmp.SelectBehavior.Insert }, + [""] = cmp.mapping( + cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Insert, + select = true, + }, + { "i", "c" } + ), + }, +} diff --git a/lua/custom/plugins/completion.lua b/lua/custom/plugins/completion.lua new file mode 100644 index 0000000..482e700 --- /dev/null +++ b/lua/custom/plugins/completion.lua @@ -0,0 +1,19 @@ +return { + "hrsh7th/nvim-cmp", + event = "InsertEnter", -- Only load plugin when in INSERT mode + dependencies = { + "hrsh7th/cmp-buffer", -- source for text in buffer + "hrsh7th/cmp-path", -- source for file system paths + { + "L3MON4D3/LuaSnip", + -- follow latest release. + version = "v2.*", -- Replace by the latest released major (first number of latest release) + }, + "saadparwaiz1/cmp_luasnip", -- for autocompletion + "rafamadriz/friendly-snippets", -- useful snippets + "onsails/lspkind.nvim", -- vs-code like pictograms + }, + config = function() + require "custom/completion" + end, +}