Subject: bug#22295: viper-mode undo bug introduced between Nov 10 and Nov 14

From: Eli Zaretskii <[email-masked]>
Date: Sat, 14 May 2016 12:25:13 +0300

> From: Jim Meyering <[email-masked]>
> Date: Sat, 2 Jan 2016 20:01:36 -0800
> 
> Hello,
> I noticed that viper-mode's "undo" ('u') command began to undo too much
> and was able quickly to determine that it worked fine with my snapshot
> built from git master some time on Nov 10, yet that it began to undo
> too much four days later.
> 
> To demonstrate the problem (without risking changing anything in your
> home directory), run this:
> 
>   mkdir /tmp/x && HOME=/tmp/x emacs -Q -f viper-mode -nw
> ~/previously-nonexistent-file
> 
> then respond "y", "y", "5" to get past the "viperize" setup questions.
> To reproduce the error, insert two lines, terminating each "insertion" with ESC,
> so that each is recorded as a separate undo'able operation. I.e., type this
> 
>    a 1 ESC
> 
> to create the first line, then
> 
>   o 2 ESC
> 
> to create the second.
> Finally, hit "u" to undo creation of the second and you'll see that it undoes
> both operations, erasing both lines.  This is rather disruptive when that first
> bit of text was a long paragraph or two -- the novice may think that it's lost,
> because redo does not restore it -- however, it is available in emacs's
> yank buffer.

Phillip, could you please look into this?  This sounds like a annoying
problem for users of viper-mode, and AFAIU it happens on the release
branch as well.

TIA