GNU bug report logs - #11774
org-mode causes undo boundaries to be lost

Previous Next

Packages: emacs, org-mode;

Reported by: Toby Cubitt <tsc25-dated-1341782875.1f08d8 <at> cantab.net>

Date: Sun, 24 Jun 2012 21:32:02 UTC

Severity: normal

Done: Stefan Monnier <monnier <at> IRO.UMontreal.CA>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Toby Cubitt <toby-undo-tree-dated-1342530392.127d50 <at> dr-qubit.org>
To: Martin Pohlack <mp26 <at> os.inf.tu-dresden.de>
Cc: Bastien <bzg <at> gnu.org>, 11774 <at> debbugs.gnu.org
Subject: bug#11774: [O] bug#11774: org-mode causes undo boundaries to be lost
Date: Tue, 3 Jul 2012 11:57:29 +0200
On Mon, Jul 02, 2012 at 08:51:48AM +0200, Martin Pohlack wrote:
> > I'm still not entirely convinced that the boundary discarding logic in
> > org-self-insert-command is correct. For example, if I do the following:
> > 
> > 1. Type some text at some location in an org-mode buffer
> > 2. Move to another location very far away
> >    (without invoking any commands other than point motion)
> > 3. Type some more text
> > 
> > then org-self-insert-cluster-for-undo collapses the undo changesets for
> > these two changes into one. Undoing then reverts both sets of changes at
> > once, even though those changes might be so far apart that they aren't
> > both visible at the same time in the buffer.
> > 
> > That seems very undesirable to me.
> 
> Having been involved in org-mode's collapsing code I am interested in
> this, but I cannot reproduce your problem.  I used a very large org-mode
> file, inserted some text, moved down some pages and inserted some text
> again (3 chars each).  Undoing was split between both parts, exactly as
> desired.  Could you provide more details please?


Sure. The following steps produce the effect I described, at least for
me. This is on a fairly recent (a couple of weeks old) bzr build of
Emacs, and a similarly recent git build of org-mode:

1. $ emacs -Q
2. C-x C-f test.org
3. M-x org-mode       [not really necessary since already in org-mode]
5. C-u 50 M-x newline
6. M-<
7. type "a"
8. M->
9. type "bc"

buffer-undo-list now contains:

(nil (52 . 54) (1 . 2) nil (1 . 51) (t . -1))

Note the lack of undo boundary between (52 . 54) and (1 . 2), which means
that undoing once (C-/) deletes both "bc" *and* "a" in one step.

HTH,

Toby
-- 
Dr T. S. Cubitt
Mathematics and Quantum Information group
Department of Mathematics
Complutense University
Madrid, Spain

email: tsc25 <at> cantab.net
web:   www.dr-qubit.org




This bug report was last modified 10 years and 201 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.