[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil a13a05f263: Add evil-execute-last-recorded-macro à l
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil a13a05f263: Add evil-execute-last-recorded-macro à la nvim |
Date: |
Mon, 17 Oct 2022 16:58:43 -0400 (EDT) |
branch: elpa/evil
commit a13a05f263dd54632d4509e7cfb2bb5df556d442
Author: Tom Dalziel <tom_dl@hotmail.com>
Commit: Tom Dalziel <33435574+tomdl89@users.noreply.github.com>
Add evil-execute-last-recorded-macro à la nvim
---
evil-commands.el | 20 +++++++++++++++++++-
evil-maps.el | 1 +
evil-tests.el | 4 ++--
evil-vars.el | 5 +++++
4 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/evil-commands.el b/evil-commands.el
index aefecc925d..b28fef461a 100644
--- a/evil-commands.el
+++ b/evil-commands.el
@@ -2447,7 +2447,8 @@ will be opened instead."
(<= ?a register ?z)
(<= ?A register ?Z))
(when defining-kbd-macro (end-kbd-macro))
- (setq evil-this-macro register)
+ (setq evil-this-macro register
+ evil-last-recorded-register register)
(evil-set-register evil-this-macro nil)
(kmacro-start-macro nil)
(setq evil-macro-buffer (current-buffer)))
@@ -2504,6 +2505,23 @@ when called interactively."
(evil-normalize-keymaps)
(signal (car err) (cdr err)))))))
+(evil-define-command evil-execute-last-recorded-macro (count)
+ "Execute last recorded keyboard macro COUNT times.
+When called with a non-numerical prefix \
+\(such as \\[universal-argument]),
+COUNT is infinite."
+ :keep-visual t
+ :suppress-operator t
+ (interactive
+ (list (cond
+ ((and current-prefix-arg (numberp current-prefix-arg))
current-prefix-arg)
+ (current-prefix-arg 0)
+ (t 1))))
+ (if evil-last-recorded-register
+ (evil-execute-macro count (evil-get-register evil-last-recorded-register
t))
+ (user-error "No previous macro"))
+ (setq evil-last-register evil-last-recorded-register))
+
;;; Visual commands
(evil-define-motion evil-visual-restore ()
diff --git a/evil-maps.el b/evil-maps.el
index 443fce1741..4c4d141e76 100644
--- a/evil-maps.el
+++ b/evil-maps.el
@@ -52,6 +52,7 @@
(define-key evil-normal-state-map "p" 'evil-paste-after)
(define-key evil-normal-state-map "P" 'evil-paste-before)
(define-key evil-normal-state-map "q" 'evil-record-macro)
+(define-key evil-normal-state-map "Q" 'evil-execute-last-recorded-macro)
(define-key evil-normal-state-map "r" 'evil-replace)
(define-key evil-normal-state-map "R" 'evil-enter-replace-state)
(define-key evil-normal-state-map "s" 'evil-substitute)
diff --git a/evil-tests.el b/evil-tests.el
index 88667d3983..388d5be699 100644
--- a/evil-tests.el
+++ b/evil-tests.el
@@ -370,11 +370,11 @@ with `M-x evil-tests-run'"))
suppression keymap comes first")
(setq evil-operator-state-minor-mode nil
evil-operator-state-local-minor-mode nil))
- (should (eq (key-binding "Q") #'undefined))
+ (should (eq (key-binding "£") #'undefined))
(ert-info ("Don't insert text")
;; may or may not signal an error, depending on batch mode
(condition-case nil
- (execute-kbd-macro "QQQ")
+ (execute-kbd-macro "£££")
(error nil))
(should (string= (buffer-substring 1 4) ";; ")))))
diff --git a/evil-vars.el b/evil-vars.el
index 036faa50b8..9655799238 100644
--- a/evil-vars.el
+++ b/evil-vars.el
@@ -1489,9 +1489,14 @@ type.")
(evil-define-local-var evil-this-motion-count nil
"Current motion count.")
+;; In light of `evil-last-recorded-register' this should probably
+;; be renamed to `evil-last-executed-register' but that may break configs
(defvar evil-last-register nil
"The last executed register.")
+(defvar evil-last-recorded-register nil
+ "The last recorded register.")
+
(defvar evil-inhibit-operator nil
"Inhibit current operator.
If an operator calls a motion and the motion sets this variable
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [nongnu] elpa/evil a13a05f263: Add evil-execute-last-recorded-macro à la nvim,
ELPA Syncer <=