]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix todo-mode item insertion bug (bug#70937)
authorStephen Berman <stephen.berman@gmx.net>
Tue, 21 May 2024 09:04:17 +0000 (11:04 +0200)
committerEshel Yaron <me@eshelyaron.com>
Thu, 23 May 2024 08:29:33 +0000 (10:29 +0200)
* 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

index a3fb3c32b276eabd7d29a5a7a0511fb5d36dd4f9..5699638a5bb2ce9a98dbc0889d01fe7ab48ad3f3 100644 (file)
@@ -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