Skip to content

Commit 2186c76

Browse files
committed
fix: is_visible() returning stale state after accept
Fixes zbirenbaum#638
1 parent 69a0dc5 commit 2186c76

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

lua/copilot/suggestion/init.lua

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -635,10 +635,11 @@ function M.accept(modifier)
635635

636636
local newText
637637

638+
ignore_next_cursor_moved = true
639+
638640
if accepted_partial then
639641
newText = suggestion.partial_text
640642
ctx.accepted_partial = true
641-
ignore_next_cursor_moved = true
642643
else
643644
M.clear_preview()
644645
newText = suggestion.text

tests/test_suggestion.lua

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,21 @@ T["suggestion()"]["suggestion with range offset"] = function()
280280
child.wait_for_suggestion()
281281

282282
reference_screenshot(child.get_screenshot(), nil, { ignore_text = { 9, 10 }, ignore_attr = { 9, 10 } })
283+
T["suggestion()"]["is_visible returns nil after accept"] = function()
284+
child.o.lines, child.o.columns = 10, 15
285+
child.config.suggestion = child.config.suggestion .. "auto_trigger = true,"
286+
child.configure_copilot()
287+
child.type_keys("i123", "<Esc>", "o456", "<Esc>", "o7")
288+
child.wait_for_suggestion()
289+
local is_visible_before = child.lua('return require("copilot.suggestion").is_visible()')
290+
assert(is_visible_before, "is_visible should be true before accept")
291+
292+
child.lua('require("copilot.suggestion").accept()')
293+
-- Allow scheduled functions to complete
294+
child.lua("vim.wait(200, function() return false end, 10)")
295+
296+
local is_visible_after = child.lua('return require("copilot.suggestion").is_visible()')
297+
MiniTest.expect.equality(is_visible_after, vim.NIL)
283298
end
284299

285300
T["suggestion()"]["next keymap triggers suggestion"] = function()

0 commit comments

Comments
 (0)