From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martin Pohlack Subject: bug#11774: bug#11774: org-mode causes undo boundaries to be lost Date: Tue, 03 Jul 2012 17:18:40 +0200 Message-ID: <4FF30D50.8010009__14038.9202665121$1341328799$gmane$org@os.inf.tu-dresden.de> References: <20120703095729.GA6651@c3po> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([208.118.235.92]:57399) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sm4sx-0006n3-78 for emacs-orgmode@gnu.org; Tue, 03 Jul 2012 11:19:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sm4sq-0003Is-Tf for emacs-orgmode@gnu.org; Tue, 03 Jul 2012 11:19:26 -0400 Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-Message-ID: In-Reply-To: <20120703095729.GA6651@c3po> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Toby Cubitt Cc: Bastien , 11774@debbugs.gnu.org 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