diff --git a/README.md b/README.md index 8ab2ef5..694dfa1 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ lua <'] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.close(), + [''] = cmp.config.disable, -- If you want to remove the default `` mapping, You can specify `cmp.config.disable` value. [''] = cmp.mapping.confirm({ select = true }), }, sources = cmp.config.sources({ diff --git a/lua/cmp/init.lua b/lua/cmp/init.lua index 4c99b6c..32892de 100644 --- a/lua/cmp/init.lua +++ b/lua/cmp/init.lua @@ -3,6 +3,7 @@ local source = require('cmp.source') local config = require('cmp.config') local autocmd = require('cmp.utils.autocmd') local keymap = require('cmp.utils.keymap') +local misc = require('cmp.utils.misc') local cmp = {} @@ -17,6 +18,7 @@ cmp.vim = require('cmp.types.vim') ---Export default config presets. cmp.config = {} +cmp.config.disable = misc.none cmp.config.compare = require('cmp.config.compare') cmp.config.sources = require('cmp.config.sources') diff --git a/lua/cmp/utils/misc.lua b/lua/cmp/utils/misc.lua index 9b32fe8..6f29639 100644 --- a/lua/cmp/utils/misc.lua +++ b/lua/cmp/utils/misc.lua @@ -29,6 +29,9 @@ misc.concat = function(list1, list2) return new_list end +---The symbol to remove key in misc.merge. +misc.none = vim.NIL + ---Merge two tables recursively ---@generic T ---@param v1 T @@ -49,6 +52,9 @@ misc.merge = function(v1, v2) end return new_tbl end + if v1 == misc.none then + return nil + end if v1 == nil then return v2 end diff --git a/lua/cmp/utils/misc_spec.lua b/lua/cmp/utils/misc_spec.lua index a1dad9f..d7cec0b 100644 --- a/lua/cmp/utils/misc_spec.lua +++ b/lua/cmp/utils/misc_spec.lua @@ -15,6 +15,7 @@ describe('misc', function() }, }) assert.are.equal(merged.a.b, 1) + merged = misc.merge({ a = false, }, { @@ -23,5 +24,14 @@ describe('misc', function() }, }) assert.are.equal(merged.a, false) + + merged = misc.merge({ + a = misc.none, + }, { + a = { + b = 1, + }, + }) + assert.are.equal(merged.a, nil) end) end)