unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#8447: Undoing M-x revert-buffer
@ 2011-04-08 15:54 Hrvoje Nikšić
  2011-04-09  1:49 ` Stefan Monnier
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Hrvoje Nikšić @ 2011-04-08 15:54 UTC (permalink / raw)
  To: 8447

It would be nice to be able to undo a revert-buffer operation.

I've just had a situation where I used M-x revert-buffer, and
immediately wanted to see the old version again.  (I wanted to briefly
compare the old and new contents, which only differed in several
characters.)  I routinely pressed C-_, and got a "no undo data" message
in the echo area.  For the shortest instant I was surprised, but I
quickly remembered that M-x revert-buffer clears the undo stack, and
that it has always worked that way.

But I would like to question this design choice.  What I wanted to do
was not really unreasonable.  The buffer held several kilobytes of data,
and my computer has gigabytes of memory at its disposal, enough room to
hold the buffer contents literally a million times over.  If you think
about it, reverting an existing buffer is just another operation on
buffer text, not that different than M-x erase-buffer followed by M-x
insert-file, which would happily remember everything.

If the maintainers agree in principle, I'd like to look into patching
revert-buffer so it records the revert as it would any other change to
the buffer text.

Hrvoje





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8447: Undoing M-x revert-buffer
  2011-04-08 15:54 bug#8447: Undoing M-x revert-buffer Hrvoje Nikšić
@ 2011-04-09  1:49 ` Stefan Monnier
  2011-04-12  4:25 ` Kevin Rodgers
  2013-05-29  1:08 ` Stefan Monnier
  2 siblings, 0 replies; 8+ messages in thread
From: Stefan Monnier @ 2011-04-09  1:49 UTC (permalink / raw)
  To: Hrvoje Nikšić; +Cc: 8447

> It would be nice to be able to undo a revert-buffer operation.

So do I.  I've been using a local patch to do that, actually.  IIRC back
when I wrote it, RMS opposed the change.  I think my change only
affected the "revert while keeping the same major-mode" such as the
revert performed silently by auto-revert-mode and VC operations.  It has
bit-rotted somewhat, but I remember that the current code works hard at
forgetting the undo data (it does it once at the Lisp level and another
time inside insert-file-contents).


        Stefan





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8447: Undoing M-x revert-buffer
  2011-04-08 15:54 bug#8447: Undoing M-x revert-buffer Hrvoje Nikšić
  2011-04-09  1:49 ` Stefan Monnier
@ 2011-04-12  4:25 ` Kevin Rodgers
  2013-05-29  1:08 ` Stefan Monnier
  2 siblings, 0 replies; 8+ messages in thread
From: Kevin Rodgers @ 2011-04-12  4:25 UTC (permalink / raw)
  To: bug-gnu-emacs

On 4/8/11 9:54 AM, Hrvoje Nikšić wrote:
> It would be nice to be able to undo a revert-buffer operation.
>
> I've just had a situation where I used M-x revert-buffer, and
> immediately wanted to see the old version again.  (I wanted to briefly
> compare the old and new contents, which only differed in several
> characters.)  I routinely pressed C-_, and got a "no undo data" message
> in the echo area.  For the shortest instant I was surprised, but I
> quickly remembered that M-x revert-buffer clears the undo stack, and
> that it has always worked that way.
>
> But I would like to question this design choice.  What I wanted to do
> was not really unreasonable.  The buffer held several kilobytes of data,
> and my computer has gigabytes of memory at its disposal, enough room to
> hold the buffer contents literally a million times over.  If you think
> about it, reverting an existing buffer is just another operation on
> buffer text, not that different than M-x erase-buffer followed by M-x
> insert-file, which would happily remember everything.
>
> If the maintainers agree in principle, I'd like to look into patching
> revert-buffer so it records the revert as it would any other change to
> the buffer text.

In the short term, or if the maintainers do not agree to Hrvoje's proposal,
how about adding a warning to the "Revert buffer from file FILE? " yes-or-no-p
prompt?

-- 
Kevin Rodgers
Denver, Colorado, USA






^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8447: Undoing M-x revert-buffer
  2011-04-08 15:54 bug#8447: Undoing M-x revert-buffer Hrvoje Nikšić
  2011-04-09  1:49 ` Stefan Monnier
  2011-04-12  4:25 ` Kevin Rodgers
@ 2013-05-29  1:08 ` Stefan Monnier
  2013-05-29  3:15   ` Drew Adams
  2 siblings, 1 reply; 8+ messages in thread
From: Stefan Monnier @ 2013-05-29  1:08 UTC (permalink / raw)
  To: 8447

I just installed into the trunk a patch which should make
revert-buffer undoable.


        Stefan





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8447: Undoing M-x revert-buffer
  2013-05-29  1:08 ` Stefan Monnier
@ 2013-05-29  3:15   ` Drew Adams
  2013-05-29  6:17     ` Andreas Röhler
  0 siblings, 1 reply; 8+ messages in thread
From: Drew Adams @ 2013-05-29  3:15 UTC (permalink / raw)
  To: Stefan Monnier, 8447

> I just installed into the trunk a patch which should make
> revert-buffer undoable.

FWIW, see my comment on this in the help list:
http://lists.gnu.org/archive/html/help-gnu-emacs/2013-05/msg00671.html

In sum, why?  And why no discussion?  Where was the "bug"?





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8447: Undoing M-x revert-buffer
  2013-05-29  3:15   ` Drew Adams
@ 2013-05-29  6:17     ` Andreas Röhler
  2013-05-29 13:27       ` Drew Adams
  0 siblings, 1 reply; 8+ messages in thread
From: Andreas Röhler @ 2013-05-29  6:17 UTC (permalink / raw)
  To: 8447

Am 29.05.2013 05:15, schrieb Drew Adams:
>> I just installed into the trunk a patch which should make
>> revert-buffer undoable.
>
> FWIW, see my comment on this in the help list:
> http://lists.gnu.org/archive/html/help-gnu-emacs/2013-05/msg00671.html
>
> In sum, why?  And why no discussion?  Where was the "bug"?
>
>
>
>

Hi Drew,

as it happened, run sometimes into this:
reverting the buffer, which turned out not the right thing - but undo-history was lost.
Consider it a useful change, thanks.

Andreas





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8447: Undoing M-x revert-buffer
  2013-05-29  6:17     ` Andreas Röhler
@ 2013-05-29 13:27       ` Drew Adams
  2013-05-30 16:57         ` Andreas Röhler
  0 siblings, 1 reply; 8+ messages in thread
From: Drew Adams @ 2013-05-29 13:27 UTC (permalink / raw)
  To: andreas.roehler, 8447

> >> I just installed into the trunk a patch which should make
> >> revert-buffer undoable.
> >
> > FWIW, see my comment on this in the help list:
> > http://lists.gnu.org/archive/html/help-gnu-emacs/2013-05/msg00671.html
> >
> > In sum, why?  And why no discussion?  Where was the "bug"?

> as it happened, run sometimes into this:
> reverting the buffer, which turned out not the right thing - but undo-
> history was lost. Consider it a useful change, thanks.

By "turned out not the right thing" I guess you mean that someone used `revert-buffer' interactively and by mistake.  And by mistake also _confirmed_ reverting.  Yes, it can happen (to anyone).

So define a command `revert-buffer-keeping-undo', and use that interactively instead of `revert-buffer'.  Or define a variable (option or internal) `revert-buffer-keeps-undo'.

What you cite is a user-interface issue - i.e., only for interactive use of the command.  Such a change, to safeguard against mistaken reverting, is akin to removing files to a trash bin instead of deleting them.  But we did not just willy nilly change the behavior of the basic function (command) `delete-file' when we added support for a recycle/trash bin.  That's not the right approach.

With extra interactive protection as the only reason, this is also akin to some users (me, for instance) wanting `C-w' to prompt for confirmation if the region is over a certain size (as in wimpy-del.el).  Certainly such safeguard features can be useful.

But this change goes way beyond offering users optional extra protection.  `revert-buffer' is also used in basic code.

The right way to add such protection against mistaken reversion is to create a separate command or option, letting users choose to use it or not.  And leave the basic `revert-buffer' alone.

FWIW, I agree that such a feature can be useful for reverting interactively.

And why no discussion before making such a change?





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8447: Undoing M-x revert-buffer
  2013-05-29 13:27       ` Drew Adams
@ 2013-05-30 16:57         ` Andreas Röhler
  0 siblings, 0 replies; 8+ messages in thread
From: Andreas Röhler @ 2013-05-30 16:57 UTC (permalink / raw)
  To: Drew Adams; +Cc: 8447

Am 29.05.2013 15:27, schrieb Drew Adams:
>>>> I just installed into the trunk a patch which should make
>>>> revert-buffer undoable.
>>>
>>> FWIW, see my comment on this in the help list:
>>> http://lists.gnu.org/archive/html/help-gnu-emacs/2013-05/msg00671.html
>>>
>>> In sum, why?  And why no discussion?  Where was the "bug"?
>
>> as it happened, run sometimes into this:
>> reverting the buffer, which turned out not the right thing - but undo-
>> history was lost. Consider it a useful change, thanks.
>
> By "turned out not the right thing" I guess you mean that someone used `revert-buffer' interactively and by mistake.  And by mistake also _confirmed_ reverting.  Yes, it can happen (to anyone).
>
> So define a command `revert-buffer-keeping-undo', and use that interactively instead of `revert-buffer'.  Or define a variable (option or internal) `revert-buffer-keeps-undo'.
>
> What you cite is a user-interface issue - i.e., only for interactive use of the command.  Such a change, to safeguard against mistaken reverting, is akin to removing files to a trash bin instead of deleting them.  But we did not just willy nilly change the behavior of the basic function (command) `delete-file' when we added support for a recycle/trash bin.  That's not the right approach.
>
> With extra interactive protection as the only reason, this is also akin to some users (me, for instance) wanting `C-w' to prompt for confirmation if the region is over a certain size (as in wimpy-del.el).  Certainly such safeguard features can be useful.
>
> But this change goes way beyond offering users optional extra protection.  `revert-buffer' is also used in basic code.
>
> The right way to add such protection against mistaken reversion is to create a separate command or option, letting users choose to use it or not.  And leave the basic `revert-buffer' alone.
>
> FWIW, I agree that such a feature can be useful for reverting interactively.
>
> And why no discussion before making such a change?
>

Hi Drew,

thanks, okay, you are right opposing it then. Mistook the matter so far.

Cheers,

Andreas






^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-05-30 16:57 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-08 15:54 bug#8447: Undoing M-x revert-buffer Hrvoje Nikšić
2011-04-09  1:49 ` Stefan Monnier
2011-04-12  4:25 ` Kevin Rodgers
2013-05-29  1:08 ` Stefan Monnier
2013-05-29  3:15   ` Drew Adams
2013-05-29  6:17     ` Andreas Röhler
2013-05-29 13:27       ` Drew Adams
2013-05-30 16:57         ` Andreas Röhler

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).