emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-28 334ff02: * lisp/repeat.el: Use same logic for repeat-check-key


From: Juri Linkov
Subject: emacs-28 334ff02: * lisp/repeat.el: Use same logic for repeat-check-key and repeat-exit-timeout.
Date: Wed, 1 Dec 2021 12:42:00 -0500 (EST)

branch: emacs-28
commit 334ff0232e07dad2ff5595b7f85c0f6f5efcb11c
Author: Juri Linkov <juri@linkov.net>
Commit: Juri Linkov <juri@linkov.net>

    * lisp/repeat.el: Use same logic for repeat-check-key and 
repeat-exit-timeout.
    
    * lisp/repeat.el (repeat-check-key): Use for repeat-check-key the same logic
    as is used for repeat-exit-timeout in repeat-post-hook (bug#51390).
    (repeat-post-hook): Check for repeat-exit-timeout symbol property.
---
 lisp/repeat.el | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/lisp/repeat.el b/lisp/repeat.el
index 664a4d6..308ba46 100644
--- a/lisp/repeat.el
+++ b/lisp/repeat.el
@@ -345,7 +345,9 @@ For example, you can set it to <return> like 
`isearch-exit'."
 (defcustom repeat-exit-timeout nil
   "Break the repetition chain of keys after specified timeout.
 When a number, exit the transient repeating mode after idle time
-of the specified number of seconds."
+of the specified number of seconds.
+You can also set the property `repeat-exit-timeout' on the command symbol.
+This property can override the value of this variable."
   :type '(choice (const :tag "No timeout to exit repeating sequence" nil)
                  (number :tag "Timeout in seconds to exit repeating"))
   :group 'convenience
@@ -431,8 +433,9 @@ See `describe-repeat-maps' for a list of all repeatable 
commands."
 
 (defun repeat-check-key (key map)
   "Check if the last key is suitable to activate the repeating MAP."
-  (let ((property (repeat--command-property 'repeat-check-key)))
-    (or (if repeat-check-key (eq property 'no) (not (eq property t)))
+  (let* ((prop (repeat--command-property 'repeat-check-key))
+         (check-key (unless (eq prop 'no) (or prop repeat-check-key))))
+    (or (not check-key)
         (lookup-key map (vector key))
         ;; Try without modifiers:
         (lookup-key map (vector (event-basic-type key))))))
@@ -475,14 +478,16 @@ See `describe-repeat-maps' for a list of all repeatable 
commands."
                   (cancel-timer repeat-exit-timer)
                   (setq repeat-exit-timer nil))
 
-                (when repeat-exit-timeout
-                  (setq repeat-exit-timer
-                        (run-with-idle-timer
-                         repeat-exit-timeout nil
-                         (lambda ()
-                           (setq repeat-in-progress nil)
-                           (funcall exitfun)
-                           (funcall repeat-echo-function nil)))))))))))
+                (let* ((prop (repeat--command-property 'repeat-exit-timeout))
+                       (timeout (unless (eq prop 'no) (or prop 
repeat-exit-timeout))))
+                  (when timeout
+                    (setq repeat-exit-timer
+                          (run-with-idle-timer
+                           timeout nil
+                           (lambda ()
+                             (setq repeat-in-progress nil)
+                             (funcall exitfun)
+                             (funcall repeat-echo-function nil))))))))))))
 
     (setq repeat-map nil)
     (setq repeat--prev-mb (cons (minibuffer-depth) current-minibuffer-command))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]