can undo an insertcan undo an insert
can undo repeated insertscan undo repeated inserts
Don't allow nesting of transactions
Set up :in-transaction? preconditions
`delete-char-under-cursor` needs to be in a transaction
`delete-current-line` must be in transaction
`insert-blank-line` must happen in a transaction
Extract `avi.undo-test` namespace
`xu<C-R>` keeps the first edit`xu<C-R>` keeps the first edit
`<C-R>` tells us it's already at the newest change`<C-R>` tells us it's already at the newest change
`xxxuu<C-R><C-R>` keeps the first two edits`xxxuu<C-R><C-R>` keeps the first two edits
`xu<C-R>u` has no edits`xu<C-R>u` has no edits
Remove unnecessary line
making a change kills the redo list
redo adjusts viewport to contain cursor
Extract `xdo`
`2ddu` undoes both lines
Extract n-times