# HG changeset patch # User Kim F. Storm # Date 1096550865 0 # Node ID cf6524063a287ac6469510b2725538e3e58363db # Parent 00748c19ee4152c6cb367cd41669bfd0fe6804cf (kmacro-lambda-form, kmacro-extract-lambda): Add. (kmacro-bind-to-key, kmacro-name-last-macro): Use kmacro-lambda-form. diff -r 00748c19ee41 -r cf6524063a28 lisp/kmacro.el --- a/lisp/kmacro.el Thu Sep 30 13:27:35 2004 +0000 +++ b/lisp/kmacro.el Thu Sep 30 13:27:45 2004 +0000 @@ -740,6 +740,30 @@ ;; letters and digits, provided that we inhibit the keymap while ;; executing the macro later on (but that's controversial...) +(defun kmacro-lambda-form (mac &optional counter format) + "Create lambda form for macro bound to symbol or key." + (if counter + (setq mac (list mac counter format))) + `(lambda (&optional arg) + "Keyboard macro." + (interactive "p") + (kmacro-exec-ring-item ',mac arg))) + +(defun kmacro-extract-lambda (mac) + "Extract kmacro from a kmacro lambda form." + (and (consp mac) + (eq (car mac) 'lambda) + (setq mac (assoc 'kmacro-exec-ring-item mac)) + (consp (cdr mac)) + (consp (car (cdr mac))) + (consp (cdr (car (cdr mac)))) + (setq mac (car (cdr (car (cdr mac))))) + (listp mac) + (= (length mac) 3) + (arrayp (car mac)) + mac)) + + (defun kmacro-bind-to-key (arg) "When not defining or executing a macro, offer to bind last macro to a key. The key sequences [C-x C-k 0] through [C-x C-k 9] and [C-x C-k A] @@ -775,10 +799,7 @@ (format-kbd-macro key-seq) cmd)))) (define-key global-map key-seq - `(lambda (&optional arg) - "Keyboard macro." - (interactive "p") - (kmacro-exec-ring-item ',(kmacro-ring-head) arg))) + (kmacro-lambda-form (kmacro-ring-head))) (message "Keyboard macro bound to %s" (format-kbd-macro key-seq)))))) @@ -798,11 +819,7 @@ symbol)) (if (string-equal symbol "") (error "No command name given")) - (fset symbol - `(lambda (&optional arg) - "Keyboard macro." - (interactive "p") - (kmacro-exec-ring-item ',(kmacro-ring-head) arg))) + (fset symbol (kmacro-lambda-form (kmacro-ring-head))) (put symbol 'kmacro t))