bug#2084: 23.0.60; todo-insert-item-here bug + patch
Stephen Berman <[email protected]>
| Newsgroups | gmane.emacs.bugs,gmane.emacs.pretest.bugs |
|---|---|
| Message-ID | <[email protected]> |
The following bug, reported in http://lists.gnu.org/archive/html/bug-gnu-emacs/2001-11/msg00234.html, still exists in the CVS trunk: From: Daniel Ortmann <[email protected]> Subject: todo-mode: pressing "I" when at the end of the line inserts the todo information at the END of the current line To: [email protected] Date: 06 Nov 2001 12:36:08 -0600 > Pressing "I" when at the end of the line inserts the todo information at > the END of the current line. It should add the new information to the > FRONT of the current line. In http://lists.gnu.org/archive/html/bug-gnu-emacs/2001-11/msg00429.html I pointed out that `I' (todo-insert-item-here) in fact inserts a new Todo entry anywhere and that, while this behavior is strictly consistent with the doc string, it is generally undesirable, and provided a patch to restrict the entry point. The patch was not committed to CVS, which is just as well, since it was deficient. Nevertheless, the existing definition remains buggy -- it could result in making the new entry inaccessible to Todo mode commands. For example, let a Todo mode category contain the following: */* 2009-01-27 15:30 steve: This is item1. Place point between "is" and "item1", type `I' and at the prompt `This is item2.'; now the category looks like this: */* 2009-01-27 15:30 steve: This is*/* 2009-01-27 15:30 steve: This is item2. item1. The new entry is not recognized as such by Todo mode commands. The attached patch fixes this by consistently inserting the new entry directly above the current entry (unless point is on an empty line, then it inserts the new entry there). 2009-01-20 Stephen Berman <[email protected]> * calendar/todo-mode.el (todo-insert-item-here): Prevent insertion of a new entry inside of an existing entry. Minor code cleanup.
todo-insert-item-here.diff
(text/x-patch, 1.5 KB)
*** emacs/lisp/calendar/todo-mode.el.~1.72.~ 2009-01-09 11:48:58.000000000 +0100
--- emacs/lisp/calendar/todo-mode.el 2009-01-20 21:30:15.000000000 +0100
***************
*** 610,625 ****
(defalias 'todo-cmd-inst 'todo-insert-item)
(defun todo-insert-item-here ()
! "Insert new TODO list entry under the cursor."
! (interactive "")
! (save-excursion
! (if (not (derived-mode-p 'todo-mode)) (todo-show))
! (let* ((new-item (concat todo-prefix " "
! (read-from-minibuffer
! "New TODO entry: "
! (if todo-entry-prefix-function
! (funcall todo-entry-prefix-function))))))
! (insert (concat new-item "\n")))))
(defun todo-more-important-p (line)
"Ask whether entry is more important than the one at LINE."
--- 610,629 ----
(defalias 'todo-cmd-inst 'todo-insert-item)
(defun todo-insert-item-here ()
! "Insert a new TODO list entry directly above the entry at point.
! If point is on an empty line, insert the entry there."
! (interactive)
! (if (not (derived-mode-p 'todo-mode)) (todo-show))
! (let ((new-item (concat todo-prefix " "
! (read-from-minibuffer
! "New TODO entry: "
! (if todo-entry-prefix-function
! (funcall todo-entry-prefix-function))))))
! (unless (and (bolp) (eolp)) (goto-char (todo-item-start)))
! (insert (concat new-item "\n"))
! (backward-char)
! ;; put point at start of new entry
! (goto-char (todo-item-start))))
(defun todo-more-important-p (line)
"Ask whether entry is more important than the one at LINE."