summaryrefslogtreecommitdiffstats
path: root/.config/nvim/lua/plugins/cmp.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/plugins/cmp.lua')
-rw-r--r--.config/nvim/lua/plugins/cmp.lua56
1 files changed, 51 insertions, 5 deletions
diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua
index 78ff9a9..828d7c2 100644
--- a/.config/nvim/lua/plugins/cmp.lua
+++ b/.config/nvim/lua/plugins/cmp.lua
@@ -1,4 +1,3 @@
1-- autocompletion
2return { 1return {
3 { 2 {
4 "hrsh7th/nvim-cmp", 3 "hrsh7th/nvim-cmp",
@@ -46,18 +45,35 @@ return {
46 TypeParameter = "", 45 TypeParameter = "",
47 } 46 }
48 47
48 ---@diagnostic disable-next-line: missing-fields
49 cmp.setup({ 49 cmp.setup({
50 enabled = true, 50 enabled = function()
51 -- disable autocompletion in prompt
52 local buftype = vim.api.nvim_buf_get_option(0, "buftype")
53 if buftype == "prompt" then return false end
54
55 local context = require 'cmp.config.context'
56 -- disable autocompletion in comments
57 return not context.in_treesitter_capture("comment") and not context.in_syntax_group("Comment")
58 end,
59 ---@diagnostic disable-next-line: missing-fields
60 completion = {
61 completeopt = "menu,menuone,noselect",
62 },
63 window = {
64 documentation = cmp.config.window.bordered(),
65 completion = cmp.config.window.bordered(),
66 },
51 snippet = { 67 snippet = {
52 expand = function(args) 68 expand = function(args)
53 luasnip.lsp_expand(args.body) 69 luasnip.lsp_expand(args.body)
54 end, 70 end,
55 }, 71 },
56 mapping = cmp.mapping.preset.insert({ 72 mapping = cmp.mapping.preset.insert({
73 ["<C-f>"] = cmp.mapping.scroll_docs(-4),
74 ["<C-d>"] = cmp.mapping.scroll_docs(4),
57 ["<C-k>"] = cmp.mapping.select_prev_item(), 75 ["<C-k>"] = cmp.mapping.select_prev_item(),
58 ["<C-j>"] = cmp.mapping.select_next_item(), 76 ["<C-j>"] = cmp.mapping.select_next_item(),
59 ["<C-d>"] = cmp.mapping.scroll_docs(-4),
60 ["<C-f>"] = cmp.mapping.scroll_docs(4),
61 ["<CR>"] = cmp.mapping.confirm({ 77 ["<CR>"] = cmp.mapping.confirm({
62 behavior = cmp.ConfirmBehavior.Replace, 78 behavior = cmp.ConfirmBehavior.Replace,
63 select = false, 79 select = false,
@@ -81,6 +97,7 @@ return {
81 end 97 end
82 end, { "i", "s" }), 98 end, { "i", "s" }),
83 }), 99 }),
100 ---@diagnostic disable-next-line: missing-fields
84 formatting = { 101 formatting = {
85 fields = { "kind", "abbr", "menu" }, 102 fields = { "kind", "abbr", "menu" },
86 format = function(entry, vim_item) 103 format = function(entry, vim_item)
@@ -103,12 +120,41 @@ return {
103 }, 120 },
104 }) 121 })
105 122
106 -- If you want insert `(` after select function or method item 123 -- insert `(` after select function or method item
107 local cmp_autopairs = require('nvim-autopairs.completion.cmp') 124 local cmp_autopairs = require('nvim-autopairs.completion.cmp')
108 cmp.event:on( 125 cmp.event:on(
109 'confirm_done', 126 'confirm_done',
110 cmp_autopairs.on_confirm_done() 127 cmp_autopairs.on_confirm_done()
111 ) 128 )
129
130 ---@diagnostic disable-next-line: missing-fields
131 cmp.setup.filetype('gitcommit', {
132 sources = cmp.config.sources({
133 { name = 'git' },
134 }, {
135 { name = 'buffer' },
136 })
137 })
138
139 -- use buffer source for `/` .
140 ---@diagnostic disable-next-line: missing-fields
141 cmp.setup.cmdline('/', {
142 mapping = cmp.mapping.preset.cmdline(),
143 sources = {
144 { name = 'buffer' }
145 }
146 })
147
148 -- use cmdline & path source for ':' .
149 ---@diagnostic disable-next-line: missing-fields
150 cmp.setup.cmdline(':', {
151 mapping = cmp.mapping.preset.cmdline(),
152 sources = cmp.config.sources({
153 { name = 'path' }
154 }, {
155 { name = 'cmdline' }
156 })
157 })
112 end, 158 end,
113 }, 159 },
114} 160}