From: Stephen Berman Date: Tue, 21 May 2024 09:04:17 +0000 (+0200) Subject: Fix todo-mode item insertion bug (bug#70937) X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5bfb7a92a14c8b9b3ba7b409e34d5e9beb5233fe;p=emacs.git Fix todo-mode item insertion bug (bug#70937) * lisp/calendar/todo-mode.el (todo-insert-item--next-param): Initially assign each key in todo-mode-map a function identifying it as invalid for item insertion, thus preventing mistakenly pressing a key from executing an unwanted different todo-mode command; the actual item insertion keys are redefined when looping over the item insertion parameters. (cherry picked from commit 7f80070232a5c010ae18de9fd8803a66623c074b) --- diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el index a3fb3c32b27..5699638a5bb 100644 --- a/lisp/calendar/todo-mode.el +++ b/lisp/calendar/todo-mode.el @@ -5792,7 +5792,24 @@ keys already entered and those still available." (apply #'todo-insert-item--basic (nconc arg parlist))))) ;; Operate on a copy of the parameter list so the original is ;; not consumed, thus available for the next key typed. - (params0 params)) + (params0 params) + (tm-keys (let (l) + (map-keymap (lambda (key _binding) + (push key l)) + todo-mode-map) + l))) + ;; Initially assign each key in todo-mode-map a function identifying + ;; it as invalid for item insertion, thus preventing mistakenly + ;; pressing a key from executing an unwanted different todo-mode + ;; command (bug#70937); the actual item insertion keys are redefined + ;; when looping over the item insertion parameters. + (dolist (k tm-keys) + (when (characterp k) + (define-key map (string k) + (lambda () + (interactive) + (message (concat "`%s' is not a valid remaining item insertion key") + (string k)))))) (when last (if (memq last '(default copy)) (progn