aboutsummaryrefslogtreecommitdiff
path: root/lua/plugins/opts/cmp.lua
diff options
context:
space:
mode:
authorsinanmohd <sinan@sinanmohd.com>2024-03-01 18:05:15 +0530
committersinanmohd <sinan@sinanmohd.com>2024-03-01 18:10:33 +0530
commit5aacff03453e505ee6e5181e3247676239570dbc (patch)
treeea6208d4f10ef33bf28d20c921469e0fde722486 /lua/plugins/opts/cmp.lua
parent1f7b1559e41b62a6ddef67bedf52dfe3b6cafd18 (diff)
plugins/lsp: init
Diffstat (limited to 'lua/plugins/opts/cmp.lua')
-rw-r--r--lua/plugins/opts/cmp.lua96
1 files changed, 96 insertions, 0 deletions
diff --git a/lua/plugins/opts/cmp.lua b/lua/plugins/opts/cmp.lua
new file mode 100644
index 0000000..c423a31
--- /dev/null
+++ b/lua/plugins/opts/cmp.lua
@@ -0,0 +1,96 @@
+local cmp = require "cmp"
+local lspzero_cmp_act = require('lsp-zero').cmp_action()
+
+local function border(hl_name)
+ return {
+ { "╭", hl_name },
+ { "─", hl_name },
+ { "╮", hl_name },
+ { "│", hl_name },
+ { "╯", hl_name },
+ { "─", hl_name },
+ { "╰", hl_name },
+ { "│", hl_name },
+ }
+end
+
+local options = {
+ completion = {
+ completeopt = "menu,menuone",
+ },
+
+ window = {
+ completion = {
+ border = border "CmpBorder",
+ winhighlight = "Normal:CmpPmenu,CursorLine:CmpSel,CursorLine:PmenuSel",
+ scrollbar = false,
+ },
+ documentation = {
+ border = border "CmpDocBorder",
+ winhighlight = "Normal:CmpDoc",
+ },
+ },
+
+ snippet = {
+ expand = function(args)
+ require("luasnip").lsp_expand(args.body)
+ end,
+ },
+
+ formatting = {
+ fields = { "abbr", "kind", "menu" },
+
+ format = function(_, item)
+ local icons = {
+ Text = " ",
+ Method = " ",
+ Function = " ",
+ Constructor = " ",
+ Field = " ",
+ Variable = " ",
+ Class = " ",
+ Interface = " ",
+ Module = " ",
+ Property = " ",
+ Unit = " ",
+ Value = " ",
+ Enum = " ",
+ Keyword = " ",
+ Snippet = " ",
+ Color = " ",
+ File = " ",
+ Reference = " ",
+ Folder = " ",
+ EnumMember = " ",
+ Constant = " ",
+ Struct = " ",
+ Event = " ",
+ Operator = " ",
+ TypeParameter = " ",
+ }
+
+ local icon = icons[item.kind] or ""
+ item.kind = string.format(" %s %s", icon, item.kind)
+
+ return item
+ end,
+ },
+
+ mapping = cmp.mapping.preset.insert({
+ ['<C-Space>'] = cmp.mapping.complete(),
+ ['<C-u>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-d>'] = cmp.mapping.scroll_docs(4),
+ ['<C-f>'] = lspzero_cmp_act.luasnip_jump_forward(),
+ ['<C-b>'] = lspzero_cmp_act.luasnip_jump_backward(),
+ }),
+
+ sources = {
+ { name = "nvim_lsp" },
+ { name = "luasnip" },
+ { name = "buffer" },
+ { name = "nvim_lua" },
+ { name = "path" },
+ },
+}
+
+return options