Skip to content

feature request: undo accepted text #235

Description

@thenbe

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions