bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#4820: marked as done (23.1.50; [PATCH] todo-mode.el)


From: Emacs bug Tracking System
Subject: bug#4820: marked as done (23.1.50; [PATCH] todo-mode.el)
Date: Sat, 31 Oct 2009 02:30:28 +0000

Your message dated Fri, 30 Oct 2009 22:23:29 -0400
with message-id <k5hbtg9u8u.fsf@fencepost.gnu.org>
and subject line Re: bug#4820: 23.1.50; [PATCH] todo-mode.el
has caused the Emacs bug report #4820,
regarding 23.1.50; [PATCH] todo-mode.el
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@emacsbugs.donarmstrong.com
immediately.)


-- 
4820: http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=4820
Emacs Bug Tracking System
Contact owner@emacsbugs.donarmstrong.com with problems
--- Begin Message --- Subject: 23.1.50; [PATCH] todo-mode.el Date: Wed, 28 Oct 2009 13:20:07 +0100 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux)
Here are two bugs in todo-mode.el; a patch is attached.

1. emacs -Q with no existing file as the value of todo-file-do
2. M-x todo-show
3. Type `e' (todo-edit-item)
=> Args out of range: 60, 61

This is because there is no todo item, so when todo-edit-item calls
todo-item-string, todo-item-start returns (point-min), which is 61, and
todo-item-end returns (1- (line-beginning-position)), i.e. 60, which
raises the args-out-of-range error on buffer-substring in
todo-item-string.  The attached fix to todo-edit-item checks whether
there is a todo item to edit and throws an error if not.  This is
consistent with other Todo mode commands, e.g. todo-{raise, lower,
delete, file}-item.

1. emacs -Q
2. M-x todo-show
3. Type `i' and at the prompt a todo item, e.g "test", then RET to
   display the item in the TODO buffer in the category "Todo"; note that
   narrowing is in effect, as required by Todo mode.
4. Type `t' to display the Todo top priorities list in a window below
   the window displaying the TODO buffer.
5. In the TODO buffer type `E' on the item to put it in Todo Edit mode
   in the buffer *TODO Edit*.
6. Type C-x k to kill *TODO Edit* and return to the TODO buffer, which
   remains unchanged.
7. In the TODO buffer type `t' again.
=> Now narrowing is no longer in effect in the TODO buffer.

This is because todo-top-priorities, although it calls widen within
save-restriction, subsequently calls set-buffer, with the result, after
the call to make-indirect-buffer in todo-edit-multiline (step 5 above),
that narrowing is not restored.  The causal chain here is not quite
clear to me: in (elisp)Current Buffer there is a warning to use
set-buffer within save-current-buffer or save-excursion to guarantee
restoration, and in fact in todo-top-priorities set-buffer is within
save-excursion, but that is outside of the save-restriction.  If the
order of save-excursion and save-restriction is switched, then narrowing
is correctly restored after step 7 above; however, this order is
discouraged in (elisp)Narrowing.  But putting save-current-buffer
between save-restriction and set-buffer also restores narrowing, so this
is what the attached patch does.  (I don't know why the failure to
restore narrowing is conditioned by make-indirect-buffer; I asked about
this on emacs-devel but have not yet gotten any response.)  In addition,
the use of save-excursion appears to be gratuitous here: point is
already moved by the preceding call to todo-show, and subsequent code
concerns the temporary top priorities buffer.  But moving todo-show
inside save-excursion does prevent point from being relocated, so I made
this change as well in the patch.


2009-10-28  Stephen Berman  <stephen.berman@gmx.net>

        * calendar/todo-mode.el (todo-edit-item): Signal an error if there
        is no item to edit. (Bug#XXXX)
        (todo-top-priorities): Restore point and restore narrowing in Todo
        buffer. (Bug#XXXX)

Attachment: txtVajFBBQyOQ.txt
Description: todo-mode.el patch


--- End Message ---
--- Begin Message --- Subject: Re: bug#4820: 23.1.50; [PATCH] todo-mode.el Date: Fri, 30 Oct 2009 22:23:29 -0400 User-agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/)
Thanks; applied.

--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]