diff options
author | Juri Linkov <juri@linkov.net> | 2021-04-08 21:46:57 +0300 |
---|---|---|
committer | Juri Linkov <juri@linkov.net> | 2021-04-08 21:54:43 +0300 |
commit | b4eb84d4afd1b847f6f4c272d04ffa1f4b36dc98 (patch) | |
tree | 0cbec6495f893d232ad9aae380d966eca932faaf | |
parent | 580c4c6510fca918610c9c0f440a7d21c4702f16 (diff) | |
download | emacs-b4eb84d4afd1b847f6f4c272d04ffa1f4b36dc98.tar.gz |
* lisp/repeat.el (repeat-post-hook): Check for prefix-arg.
This is instead of checking for a list of argument-related commands
that set prefix-arg anyway.
-rw-r--r-- | lisp/repeat.el | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/lisp/repeat.el b/lisp/repeat.el index 8cbfaa07487..b3c58f2f818 100644 --- a/lisp/repeat.el +++ b/lisp/repeat.el @@ -382,25 +382,17 @@ When Repeat mode is enabled, and the command symbol has the property named (when rep-map (when (boundp rep-map) (setq rep-map (symbol-value rep-map))) - (let ((prefix-command-p (memq this-original-command - '(universal-argument - universal-argument-more - digit-argument - negative-argument))) - (map (copy-keymap rep-map)) + (let ((map (copy-keymap rep-map)) keys) ;; Exit when the last char is not among repeatable keys, ;; so e.g. `C-x u u' repeats undo, whereas `C-/ u' doesn't. (when (and (zerop (minibuffer-depth)) ; avoid remapping in prompts (or (lookup-key map (this-command-keys-vector)) - prefix-command-p)) - - (when (and repeat-keep-prefix (not prefix-command-p)) - (setq prefix-arg current-prefix-arg)) + prefix-arg)) ;; Messaging - (unless prefix-command-p + (unless prefix-arg (map-keymap (lambda (key _) (push key keys)) map) (let ((mess (format-message "Repeat with %s%s" @@ -419,6 +411,9 @@ When Repeat mode is enabled, and the command symbol has the property named (when repeat-exit-key (define-key map repeat-exit-key 'ignore)) + (when (and repeat-keep-prefix (not prefix-arg)) + (setq prefix-arg current-prefix-arg)) + (set-transient-map map)))))) (setq repeat-map nil)) |