GNU bug report logs -
#11774
org-mode causes undo boundaries to be lost
Previous Next
Full log
Message #20 received at 11774 <at> debbugs.gnu.org (full text, mbox):
On 03.07.2012 11:57, Toby Cubitt wrote:
> 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.
Understood. I tried exactly the same thing with an older emacs (GNU
Emacs 23.2.1 (x86_64-pc-linux-gnu, GTK+ Version 2.24.4) of 2011-04-04 on
crested, modified by Debian) and org-mode (6.33x and 7.6) and have this
result:
(nil (53 . 54) (52 . 53) nil (1 . 2) nil (1 . 51) (t 65535 . 65535))
Which is what one wants. Someone seems to be merging the self-insert
commands in your situation. Probably the native merging code has
changed in recent emacs itself.
If this is confirmed, we could modify org-mode's merging code to only
merge undo entries that span one character.
Martin
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.