C6.16.2Correction and completion as undo unitsdesignresearch

Autocorrect and autocomplete should be independent undo units

Aliases: correction on undo stack · completion on undo stack · separate undo item

What it is

A stretch the system wrote—the word correction swapped in, the suffix completion appended—should occupy its own item on the undo stack, not fuse with typed letters before or after. One undo removes only what the system wrote; the typed prefix or the next word stays. If they fuse, undoing a bad correction also undoes a word the user just typed.

Why it happens

Typing, correction, and completion are three authors. If the stack melts them by time into “the current word,” authorship is lost and undo cannot aim at “the thing the system just did.” Correction fires on a space boundary and looks like part of the word; it is a replace command. Completion fires on a tap or Tab; it is an insert command. Both should push like paste. A separate item also lets “undo the correction” work without depending on correction’s private backspace gesture—that gesture may remain, but general undo must do the same job, or people who only know undo have no fallback. Fusion fails in a typical way: type a prefix, accept completion, undo, and the whole word vanishes when the user only wanted the completion’s tail gone.

Studying it

Build “type a prefix → system replace or complete → type the next word,” then press undo once and see where the document stops. Independent variables include whether correction and completion push separately, and whether undo shares a gesture with backspace. Dependent measures include whether the prefix remains, whether the next word is deleted, and whether users think that undo aimed at the system action. Do not count “tap the correction mark to restore” as this claim: that is a correction control, not the undo stack.

Where it stops holding

Ghost text not yet accepted has not been written and should not push. An IME candidate the user explicitly tapped is a confirmed insert, unlike correction, and still should not fuse with neighbouring keystrokes. Fields with correction and completion off have no such items. Someone else’s auto-edit in a collaborative document should not appear on my stack.

Applying it

  • Push one undo record per silent replacement and per accepted completion, storing the range that was replaced or inserted.
  • One undo should leave the prefix and drop the system write; accept with “type prefix—accept completion—undo.”
  • General undo and restore-on-the-correction-mark should return to the same original string, so the two paths do not diverge.

Related

  • Same group: C6.16.1 Undo granularity should be by word or action, not by character · C6.16.3 Mobile lacks a stable undo entry
  • Adjacent: C6.11 Autocorrect · C6.10 Autocomplete
  • Search: undo unit · autocorrect undo · completion undo

Cards in the same group

Quick Actions

Share

Share this page

ios_share

https://hci.top/en/handbook/C6.16.2