copilot.lua icon indicating copy to clipboard operation
copilot.lua copied to clipboard

feature request: undo accepted text

Open thenbe opened this issue 1 year ago • 2 comments

Current behavior:

  1. Type 123
  2. Copilot suggests 456
  3. You accept suggestion
  4. You press undo
  5. Observe that entire line is deleted

Desired behavior:

  1. Type 123
  2. Copilot suggests 456
  3. You accept suggestion
  4. You press undo
  5. Observe that only 456 is deleted. You are still left with the original text you manually typed: 123

Workaround attempts

I tried this after disabling the default accept keymap, but the it acts in a weird manner. Instead of undoing the suggestion, it only moves the cursor without removing any text.

map("i", "<M-f>", function()
	-- 1. preserve undo point
	vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<c-g>u", true, false, true), "t", false)
	-- 2. then accept suggestion
	require("copilot.suggestion").accept()
end)

This one doesn't work either. Here, pressing undo removes the entire line.

map("i", "<M-f>", function()
	-- 1. simulate exiting then re-entering insert mode to trigger undopoint
	vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Esc>a", true, false, true), "t", false)
	-- 2. then accept suggestion
	require("copilot.suggestion").accept()
end)

thenbe avatar Nov 12 '23 17:11 thenbe

This is also probably a regression from https://github.com/neovim/neovim/pull/24901 🤔

What is your Neovim version?

MunifTanjim avatar Nov 14 '23 20:11 MunifTanjim

I'm on nightly.

NVIM v0.10.0-dev-d2983dc
Build type: Release
LuaJIT 2.1.1693350652

thenbe avatar Nov 16 '23 04:11 thenbe