aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeo Liu2013-03-29 22:53:27 +0800
committerLeo Liu2013-03-29 22:53:27 +0800
commit35710234cefabd10ac9bc1d3b166b5ec91b43b44 (patch)
tree4174792979b43ed6c597f5e7f676646cd6b32162
parentefc0bb734970ef30dfe6fbda151b797bcac4ae1f (diff)
downloademacs-35710234cefabd10ac9bc1d3b166b5ec91b43b44.tar.gz
emacs-35710234cefabd10ac9bc1d3b166b5ec91b43b44.zip
* kmacro.el (kmacro-to-register): New command.
(kmacro-execute-from-register): New function. (kmacro-keymap): Bind to 'x'. Fixes: debbugs:14071
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/kmacro.el21
2 files changed, 27 insertions, 0 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 36b69c1ac28..6bb92573d01 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
12013-03-29 Leo Liu <sdl.web@gmail.com>
2
3 * kmacro.el (kmacro-to-register): New command.
4 (kmacro-execute-from-register): New function.
5 (kmacro-keymap): Bind to 'x'. (Bug#14071)
6
12013-03-29 Stefan Monnier <monnier@iro.umontreal.ca> 72013-03-29 Stefan Monnier <monnier@iro.umontreal.ca>
2 8
3 * mpc.el: Use defvar-local and setq-local. 9 * mpc.el: Use defvar-local and setq-local.
diff --git a/lisp/kmacro.el b/lisp/kmacro.el
index d573bd02397..4253fb87d5c 100644
--- a/lisp/kmacro.el
+++ b/lisp/kmacro.el
@@ -202,6 +202,7 @@ macro to be executed before appending to it."
202 ;; naming and binding 202 ;; naming and binding
203 (define-key map "b" 'kmacro-bind-to-key) 203 (define-key map "b" 'kmacro-bind-to-key)
204 (define-key map "n" 'kmacro-name-last-macro) 204 (define-key map "n" 'kmacro-name-last-macro)
205 (define-key map "x" 'kmacro-to-register)
205 map) 206 map)
206 "Keymap for keyboard macro commands.") 207 "Keymap for keyboard macro commands.")
207(defalias 'kmacro-keymap kmacro-keymap) 208(defalias 'kmacro-keymap kmacro-keymap)
@@ -836,6 +837,26 @@ Such a \"function\" cannot be called from Lisp, but it is a valid editor command
836 (put symbol 'kmacro t)) 837 (put symbol 'kmacro t))
837 838
838 839
840(defun kmacro-execute-from-register (k)
841 (let ((last-kbd-macro k))
842 (kmacro-call-macro current-prefix-arg)))
843
844(defun kmacro-to-register (r)
845 "Store the last keyboard macro in register R."
846 (interactive
847 (progn
848 (or last-kbd-macro (error "No keyboard macro defined"))
849 (list (read-char "Save to register: "))))
850 (set-register r (registerv-make
851 last-kbd-macro
852 :jump-func 'kmacro-execute-from-register
853 :print-func (lambda (k)
854 (princ (format "a keyboard macro:\n %s"
855 (format-kbd-macro k))))
856 :insert-func (lambda (k)
857 (insert (format-kbd-macro k))))))
858
859
839(defun kmacro-view-macro (&optional _arg) 860(defun kmacro-view-macro (&optional _arg)
840 "Display the last keyboard macro. 861 "Display the last keyboard macro.
841If repeated, it shows previous elements in the macro ring." 862If repeated, it shows previous elements in the macro ring."