diff --git a/lua/lazyvim/plugins/coding.lua b/lua/lazyvim/plugins/coding.lua index 4c023141..db83a9f8 100644 --- a/lua/lazyvim/plugins/coding.lua +++ b/lua/lazyvim/plugins/coding.lua @@ -36,7 +36,15 @@ return { [""] = cmp.mapping.scroll_docs(4), [""] = cmp.mapping.complete(), [""] = cmp.mapping.abort(), - [""] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + [""] = function(fallback) + if cmp.visible() then + LazyVim.create_undo() + if cmp.confirm({ select = true }) then + return + end + end + return fallback() + end, [""] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true, diff --git a/lua/lazyvim/util/init.lua b/lua/lazyvim/util/init.lua index bc13b730..3f30f517 100644 --- a/lua/lazyvim/util/init.lua +++ b/lua/lazyvim/util/init.lua @@ -190,4 +190,12 @@ function M.dedup(list) return ret end +M.CREATE_UNDO = vim.api.nvim_replace_termcodes("u", true, true, true) +function M.create_undo() + if vim.api.nvim_get_mode().mode == "i" then + dd("undo") + vim.api.nvim_feedkeys(M.CREATE_UNDO, "n", false) + end +end + return M