diff options
| author | Leo Liu | 2013-03-29 22:53:27 +0800 |
|---|---|---|
| committer | Leo Liu | 2013-03-29 22:53:27 +0800 |
| commit | 35710234cefabd10ac9bc1d3b166b5ec91b43b44 (patch) | |
| tree | 4174792979b43ed6c597f5e7f676646cd6b32162 | |
| parent | efc0bb734970ef30dfe6fbda151b797bcac4ae1f (diff) | |
| download | emacs-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/ChangeLog | 6 | ||||
| -rw-r--r-- | lisp/kmacro.el | 21 |
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 @@ | |||
| 1 | 2013-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 | |||
| 1 | 2013-03-29 Stefan Monnier <monnier@iro.umontreal.ca> | 7 | 2013-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. |
| 841 | If repeated, it shows previous elements in the macro ring." | 862 | If repeated, it shows previous elements in the macro ring." |