From 5bfb7a92a14c8b9b3ba7b409e34d5e9beb5233fe Mon Sep 17 00:00:00 2001 From: Stephen Berman Date: Tue, 21 May 2024 11:04:17 +0200 Subject: [PATCH] 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) --- lisp/calendar/todo-mode.el | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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 -- 2.39.5