From e789efee153a6850e4da905c8c28082081967375 Mon Sep 17 00:00:00 2001 From: tjex Date: Thu, 8 Jan 2026 13:26:53 +0100 Subject: [PATCH 1/3] enable toggle_auto_trigger as supported insert mode keymap via suggestion.keymap update readme --- README.md | 3 ++- lua/copilot/config/suggestion.lua | 2 ++ lua/copilot/suggestion/init.lua | 20 +++++++++++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 43866225..33bd3a7a 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ require('copilot').setup({ enabled = true, auto_trigger = false, hide_during_completion = true, - debounce = 75, + debounce = 15, trigger_on_accept = true, keymap = { accept = "", @@ -142,6 +142,7 @@ require('copilot').setup({ next = "", prev = "", dismiss = "", + toggle_auto_trigger = false, }, }, nes = { diff --git a/lua/copilot/config/suggestion.lua b/lua/copilot/config/suggestion.lua index 206cc9c1..7427cb5c 100644 --- a/lua/copilot/config/suggestion.lua +++ b/lua/copilot/config/suggestion.lua @@ -33,6 +33,7 @@ local suggestion = { next = "", prev = "", dismiss = "", + toggle_auto_trigger = false, }, }, } @@ -51,6 +52,7 @@ function suggestion.validate(config) vim.validate("keymap.next", config.keymap.next, { "string", "boolean" }) vim.validate("keymap.prev", config.keymap.prev, { "string", "boolean" }) vim.validate("keymap.dismiss", config.keymap.dismiss, { "string", "boolean" }) + vim.validate("keymap.toggle_auto_trigger", config.keymap.toggle_auto_trigger, { "string", "boolean" }) end return suggestion diff --git a/lua/copilot/suggestion/init.lua b/lua/copilot/suggestion/init.lua index b99006f3..3e138caf 100644 --- a/lua/copilot/suggestion/init.lua +++ b/lua/copilot/suggestion/init.lua @@ -169,6 +169,14 @@ function M.set_keymap(bufnr) return false end, "[copilot] dismiss suggestion", bufnr) + + keymaps.register_keymap( + "i", + keymap.toggle_auto_trigger, + M.toggle_auto_trigger, + "[copilot] toggle auto trigger", + bufnr + ) end ---@param bufnr integer @@ -184,6 +192,7 @@ function M.unset_keymap(bufnr) keymaps.unset_keymap_if_exists("i", keymap.next, bufnr) keymaps.unset_keymap_if_exists("i", keymap.prev, bufnr) keymaps.unset_keymap_if_exists("i", keymap.dismiss, bufnr) + keymaps.unset_keymap_if_exists("i", keymap.toggle_auto_trigger, bufnr) end local function stop_timer() @@ -733,7 +742,16 @@ end -- toggles auto trigger for the current buffer function M.toggle_auto_trigger() - vim.b.copilot_suggestion_auto_trigger = not should_auto_trigger() + local new_state = not should_auto_trigger() + vim.b.copilot_suggestion_auto_trigger = new_state + + -- Long debounce will still show suggestions after toggling in + -- insert mode, so we clear them manually. + if not new_state then + local ctx = get_ctx() + clear(ctx) + M.clear_preview() + end end local function on_insert_leave() From 30aaba8a01893a28e30dd3873699e1ea476df049 Mon Sep 17 00:00:00 2001 From: tjex Date: Thu, 8 Jan 2026 13:43:26 +0100 Subject: [PATCH 2/3] force suggestions to trigger when toggling auto_trigger off -> on --- lua/copilot/suggestion/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lua/copilot/suggestion/init.lua b/lua/copilot/suggestion/init.lua index 3e138caf..1e7aa942 100644 --- a/lua/copilot/suggestion/init.lua +++ b/lua/copilot/suggestion/init.lua @@ -751,7 +751,11 @@ function M.toggle_auto_trigger() local ctx = get_ctx() clear(ctx) M.clear_preview() + else + request_suggestion_when_auto_trigger(bufnr) end + + logger.trace("auto trigger toggled to " .. tostring(new_state)) end local function on_insert_leave() From cc7c5db313bfec23234375c25875fbd59fcf10ae Mon Sep 17 00:00:00 2001 From: tjex Date: Fri, 9 Jan 2026 14:08:41 +0100 Subject: [PATCH 3/3] fix undefined variable --- lua/copilot/suggestion/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/copilot/suggestion/init.lua b/lua/copilot/suggestion/init.lua index 1e7aa942..ea556f5b 100644 --- a/lua/copilot/suggestion/init.lua +++ b/lua/copilot/suggestion/init.lua @@ -742,6 +742,7 @@ end -- toggles auto trigger for the current buffer function M.toggle_auto_trigger() + local bufnr = vim.api.nvim_get_current_buf() local new_state = not should_auto_trigger() vim.b.copilot_suggestion_auto_trigger = new_state