local completion_state = { enabled = true, -- current state backup = { -- store the original values so we can restore them omnifunc = nil, completefunc = nil, completeopt = nil, }, } vim.keymap.set("n", "co", function() if completion_state.enabled then -- ----- DISABLE ----- completion_state.backup.omnifunc = vim.opt_local.omnifunc:get() completion_state.backup.completefunc = vim.opt_local.completefunc:get() completion_state.backup.completeopt = vim.opt_local.completeopt:get() -- Clear the sources vim.opt_local.omnifunc = "" vim.opt_local.completefunc = "" -- Hide the menu even if something tries to show it vim.opt_local.completeopt = { "noinsert", "noselect" } completion_state.enabled = false print("⛔ Autocompletion disabled") else -- ----- ENABLE ----- vim.opt_local.omnifunc = completion_state.backup.omnifunc vim.opt_local.completefunc = completion_state.backup.completefunc -- Restore the previous `completeopt` (or a safe default) vim.opt_local.completeopt = completion_state.backup.completeopt or { "menu", "preview", "noinsert", "noselect" } completion_state.enabled = true print("✅ Autocompletion re‑enabled") end end, { desc = "Toggle all autocompletion (omnifunc, completefunc, menu)" })