]> git.eshelyaron.com Git - emacs.git/commitdiff
Add a command for redisplay during keyboard macros
authorMarco Wahl <marcowahlsoft@gmail.com>
Fri, 29 Jan 2021 07:01:12 +0000 (08:01 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 29 Jan 2021 07:01:12 +0000 (08:01 +0100)
* doc/emacs/kmacro.texi (Basic Keyboard Macro): Document it
(bug#39252).

* lisp/kmacro.el (kdb-macro-redisplay): New function.
(kmacro-keymap): Bind it.

doc/emacs/kmacro.texi
etc/NEWS
lisp/kmacro.el

index adb2ab8d5618b5645fdf0b7c2a4d7d21265804c2..e713c6ef8c0833ca5a9ceed4039aae8cf02874a8 100644 (file)
@@ -179,6 +179,14 @@ itself counts as the first repetition, since it is executed as you
 define it, so @kbd{C-u 4 C-x )} executes the macro immediately 3
 additional times.
 
+@findex kdb-macro-redisplay
+@kindex C-x C-k Q
+  While executing a long-running keyboard macro, it can sometimes be
+useful to trigger a redisplay (to show how far we've gotten).  The
+@kbd{C-x C-k Q} can be used for this.  As a not very useful example,
+@kbd{C-x ( M-f C-x C-k Q C-x )} will create a macro that will
+redisplay once per iteration when saying @kbd{C-u 42 C-x e}.
+
 @node Keyboard Macro Ring
 @section The Keyboard Macro Ring
 
index f12c94d6491e94812b57ee22efcca4ee00c84e75..8e233f8f196044c6e7120dfdf88ed90ae42d9e38 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1577,6 +1577,9 @@ This allows mode-specific alterations to how `thing-at-point' works.
 
 ** Miscellaneous
 
++++
+*** New command `C-x C-k Q' to force redisplay in keyboard macros.
+
 ---
 *** New user option 'remember-diary-regexp'.
 
index bb8dacf4f4874e2cd2905f4d26d4d28d2eae2160..303f38a59b68fb57aefbfcb16275455df7a5057f 100644 (file)
@@ -172,6 +172,7 @@ macro to be executed before appending to it."
     (define-key map "\C-k" 'kmacro-end-or-call-macro-repeat)
     (define-key map "r"    'apply-macro-to-region-lines)
     (define-key map "q"    'kbd-macro-query)  ;; Like C-x q
+    (define-key map "Q"    'kdb-macro-redisplay)
 
     ;; macro ring
     (define-key map "\C-n" 'kmacro-cycle-ring-next)
@@ -1298,6 +1299,16 @@ To customize possible responses, change the \"bindings\" in
       (kmacro-push-ring)
       (setq last-kbd-macro kmacro-step-edit-new-macro))))
 
+(defun kdb-macro-redisplay ()
+  "Force redisplay during kbd macro execution."
+  (interactive)
+  (or executing-kbd-macro
+      defining-kbd-macro
+      (user-error "Not defining or executing kbd macro"))
+  (when executing-kbd-macro
+    (let ((executing-kbd-macro nil))
+      (redisplay))))
+
 (provide 'kmacro)
 
 ;;; kmacro.el ends here