* TODO mode small bug, but maybe PC-completion guilty?
@ 2007-01-04 12:41 Michaël Cadilhac
2007-01-06 2:55 ` Richard Stallman
0 siblings, 1 reply; 2+ messages in thread
From: Michaël Cadilhac @ 2007-01-04 12:41 UTC (permalink / raw)
[-- Attachment #1.1.1: Type: text/plain, Size: 677 bytes --]
Hi!
Here's a recipe for the bug:
$ rm ~/.todo-do
$ emacs -Q
M-x partial-completion-mode
M-x todo-show
C-x C-b *scratch* RET
M-x todo-show
j Todo TAB TAB TAB
Error: PC-complete: Wrong type argument: sequencep, t
Okey, the problem is simple. `completing-read' is called with ("Todo"
"Todo") or the equivalent alist. PC-do-complete has a match with
"Todo", but it is not the only one, so he wants to find the common
prefix:
(setq prefix (try-completion (PC-chunk-after basestr skip)
poss)))
Sadly enough, try-completion returns `t'. Gosh.
I think that both files are to be fixed. First, don't allow duplicates
in todo-mode:
[-- Attachment #1.1.2: todo.patch --]
[-- Type: text/x-patch, Size: 3510 bytes --]
Index: lisp/calendar/todo-mode.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/calendar/todo-mode.el,v
retrieving revision 1.57
diff -c -r1.57 todo-mode.el
*** lisp/calendar/todo-mode.el 8 Feb 2006 07:54:11 -0000 1.57
--- lisp/calendar/todo-mode.el 4 Jan 2007 12:06:10 -0000
***************
*** 1,6 ****
;;; todo-mode.el --- major mode for editing TODO list files
! ;; Copyright (C) 1997, 1999, 2001, 2002, 2003, 2004, 2005, 2006
;; Free Software Foundation, Inc.
;; Author: Oliver Seidel <os10000@seidel-space.de>
--- 1,6 ----
;;; todo-mode.el --- major mode for editing TODO list files
! ;; Copyright (C) 1997, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007
;; Free Software Foundation, Inc.
;; Author: Oliver Seidel <os10000@seidel-space.de>
***************
*** 532,555 ****
(defun todo-add-category (cat)
"Add new category CAT to the TODO list."
(interactive "sCategory: ")
! (save-window-excursion
! (setq todo-categories (cons cat todo-categories))
! (find-file todo-file-do)
! (widen)
! (goto-char (point-min))
! (let ((posn (search-forward "-*- mode: todo; " 17 t)))
! (if (not (null posn)) (goto-char posn))
! (if (equal posn nil)
! (progn
! (insert "-*- mode: todo; \n")
! (forward-char -1))
! (kill-line)))
! (insert (format "todo-categories: %S; -*-" todo-categories))
! (forward-char 1)
! (insert (format "%s%s%s\n%s\n%s %s\n"
! todo-prefix todo-category-beg cat
! todo-category-end
! todo-prefix todo-category-sep)))
0)
;;;###autoload
--- 532,557 ----
(defun todo-add-category (cat)
"Add new category CAT to the TODO list."
(interactive "sCategory: ")
! (if (member cat todo-categories)
! (error "This category already exists")
! (save-window-excursion
! (setq todo-categories (cons cat todo-categories))
! (find-file todo-file-do)
! (widen)
! (goto-char (point-min))
! (let ((posn (search-forward "-*- mode: todo; " 17 t)))
! (if (not (null posn)) (goto-char posn))
! (if (equal posn nil)
! (progn
! (insert "-*- mode: todo; \n")
! (forward-char -1))
! (kill-line)))
! (insert (format "todo-categories: %S; -*-" todo-categories))
! (forward-char 1)
! (insert (format "%s%s%s\n%s\n%s %s\n"
! todo-prefix todo-category-beg cat
! todo-category-end
! todo-prefix todo-category-sep))))
0)
;;;###autoload
***************
*** 952,957 ****
--- 954,961 ----
(find-file todo-file-do)
(erase-buffer)
(todo-mode)
+ (setq todo-categories nil
+ todo-cats nil)
(todo-add-category "Todo"))
(provide 'todo-mode)
Index: lisp/ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.10526
diff -C0 -r1.10526 ChangeLog
*** lisp/ChangeLog 3 Jan 2007 20:17:09 -0000 1.10526
--- lisp/ChangeLog 4 Jan 2007 12:06:30 -0000
***************
*** 0 ****
--- 1,7 ----
+ 2007-01-04 Michaël Cadilhac <michael.cadilhac@lrde.org>
+
+ * calendar/todo-mode.el (todo-add-category): Prevent adding a category
+ that already exists.
+ (todo-initial-setup): Make sure the setup is empty by setting the
+ category lists to nil.
+
[-- Attachment #1.1.3: Type: text/plain, Size: 186 bytes --]
Then, even if the caller of (PC-) completing-read is guilty to have
twice the same thing in his completion list, we may want to not crash
and allow it like the normal completing-read:
[-- Attachment #1.1.4: complete.patch --]
[-- Type: text/x-patch, Size: 1131 bytes --]
Index: lisp/complete.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/complete.el,v
retrieving revision 1.58
diff -c -r1.58 complete.el
*** lisp/complete.el 5 Dec 2006 05:53:57 -0000 1.58
--- lisp/complete.el 4 Jan 2007 12:39:24 -0000
***************
*** 553,558 ****
--- 553,561 ----
(setq poss (cons (car p) poss))))
(setq p (cdr p)))))
+ ;; If table had duplicates, they can be here.
+ (delete-dups poss)
+
;; Handle completion-ignored-extensions
(and filename
(not (eq mode 'help))
Index: lisp/ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.10526
diff -C0 -r1.10526 ChangeLog
*** lisp/ChangeLog 3 Jan 2007 20:17:09 -0000 1.10526
--- lisp/ChangeLog 4 Jan 2007 12:39:45 -0000
***************
*** 0 ****
--- 1,5 ----
+ 2007-01-04 Michaël Cadilhac <michael.cadilhac@lrde.org>
+
+ * complete.el (PC-do-completion): Delete duplicates in the list of
+ possible completions.
+
[-- Attachment #1.1.5: Type: text/plain, Size: 347 bytes --]
Any opinion?
--
| Michaël `Micha' Cadilhac | Mieux vaut se taire |
| Epita/LRDE Promo 2007 | Que de parler trop fort. |
| http://michael.cadilhac.name | -- As de trèfle |
`--JID: michael.cadilhac@gmail.com--' - --'
[-- Attachment #1.2: Type: application/pgp-signature, Size: 188 bytes --]
[-- Attachment #2: Type: text/plain, Size: 142 bytes --]
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2007-01-06 2:55 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-01-04 12:41 TODO mode small bug, but maybe PC-completion guilty? Michaël Cadilhac
2007-01-06 2:55 ` Richard Stallman
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.