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

From: Eli Zaretskii <[email-masked]>
Date: Fri, 20 May 2016 13:00:20 +0300

> From: Jim Meyering <[email-masked]>
> Date: Wed, 18 May 2016 18:09:36 -0700
> Cc: [email-masked], John Wiegley <[email-masked]>, Eli Zaretskii <[email-masked]>
> 
> On Wed, May 18, 2016 at 2:42 PM, Phillip Lord
> <[email-masked]> wrote:
> > Jim Meyering <[email-masked]> writes:
> >
> >> On Wed, May 18, 2016 at 2:15 AM, Phillip Lord
> >> <[email-masked]> wrote:
> >>> Yeah, I was adding two undo-boundaries to rather than just one. For no
> >>> readily apparent reason I was directly changing the buffer-undo-list,
> >>> rather than calling undo-boundary.
> >>>
> >>> Anyway, that should be fixed.
> >>
> >> Confirmed.
> >> Thanks again for fixing all of that.
> >
> >
> > Let me know if you find anything else.
> >
> > John, this is a reasonably extensive change now -- affecting both
> > simple.el, but also a big rework of viper undo.
> >
> > To Emacs-25 or not to Emacs-25 that is the question?
> 
> Perspective of a viper-mode user: including this fix in Emacs-25 is a
> must: without it, any existing viper-mode user will very quickly
> notice how "undo" appears to destroy data, seemingly unrecoverably,
> since "redo" does not restore it -- they'd have to go look in emacs'
> yank buffer.

FWIW, I think this should go to emacs-25, since (a) the changes affect
only viper-mode, and (b) users of that mode will be most unhappy
without these changes.

However, we should add comments to viper-cmd.el that document the
special handling of 'undo' by viper-mode, and how that interacts with
the core 'undo' functionalities.  We should also comment in simple.el
that undo-auto-disable-boundaries is used by viper-mode, and document
that variable in the ELisp manual.  Phillip, can you add these bits to
the branch, please?

Thanks.