emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r112181: * kmacro.el (kmacro-to-regis


From: Leo Liu
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r112181: * kmacro.el (kmacro-to-register): New command.
Date: Fri, 29 Mar 2013 22:53:27 +0800
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 112181
fixes bug: http://debbugs.gnu.org/14071
committer: Leo Liu <address@hidden>
branch nick: trunk
timestamp: Fri 2013-03-29 22:53:27 +0800
message:
  * kmacro.el (kmacro-to-register): New command.
  (kmacro-execute-from-register): New function.
  (kmacro-keymap): Bind to 'x'.
modified:
  lisp/ChangeLog
  lisp/kmacro.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2013-03-29 14:23:24 +0000
+++ b/lisp/ChangeLog    2013-03-29 14:53:27 +0000
@@ -1,3 +1,9 @@
+2013-03-29  Leo Liu  <address@hidden>
+
+       * kmacro.el (kmacro-to-register): New command.
+       (kmacro-execute-from-register): New function.
+       (kmacro-keymap): Bind to 'x'.  (Bug#14071)
+
 2013-03-29  Stefan Monnier  <address@hidden>
 
        * mpc.el: Use defvar-local and setq-local.

=== modified file 'lisp/kmacro.el'
--- a/lisp/kmacro.el    2013-01-01 09:11:05 +0000
+++ b/lisp/kmacro.el    2013-03-29 14:53:27 +0000
@@ -202,6 +202,7 @@
     ;; naming and binding
     (define-key map "b"    'kmacro-bind-to-key)
     (define-key map "n"    'kmacro-name-last-macro)
+    (define-key map "x"    'kmacro-to-register)
     map)
   "Keymap for keyboard macro commands.")
 (defalias 'kmacro-keymap kmacro-keymap)
@@ -836,6 +837,26 @@
   (put symbol 'kmacro t))
 
 
+(defun kmacro-execute-from-register (k)
+  (let ((last-kbd-macro k))
+    (kmacro-call-macro current-prefix-arg)))
+
+(defun kmacro-to-register (r)
+  "Store the last keyboard macro in register R."
+  (interactive
+   (progn
+     (or last-kbd-macro (error "No keyboard macro defined"))
+     (list (read-char "Save to register: "))))
+  (set-register r (registerv-make
+                  last-kbd-macro
+                  :jump-func 'kmacro-execute-from-register
+                  :print-func (lambda (k)
+                                 (princ (format "a keyboard macro:\n   %s"
+                                                (format-kbd-macro k))))
+                  :insert-func (lambda (k)
+                                  (insert (format-kbd-macro k))))))
+
+
 (defun kmacro-view-macro (&optional _arg)
   "Display the last keyboard macro.
 If repeated, it shows previous elements in the macro ring."


reply via email to

[Prev in Thread] Current Thread [Next in Thread]