diff options
-rw-r--r-- | lisp/ChangeLog | 4 | ||||
-rw-r--r-- | lisp/kmacro.el | 12 |
2 files changed, 11 insertions, 5 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 015ce23ef8e..6da3acf9dda 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2013-04-05 Leo Liu <sdl.web@gmail.com> + + * kmacro.el (kmacro-call-macro): Fix bug#14135. + 2013-04-05 Jay Belanger <jay.p.belanger@gmail.com> * calc/calc-units.el (calc-convert-units): Rewrite conditional. diff --git a/lisp/kmacro.el b/lisp/kmacro.el index c08f49df0a7..d6de2feb3fc 100644 --- a/lisp/kmacro.el +++ b/lisp/kmacro.el @@ -631,11 +631,11 @@ others, use \\[kmacro-name-last-macro]." (> (length (this-single-command-keys)) 1)) ;; Used when we're in the process of repeating. (eq no-repeat 'repeating)) - last-input-event)) - (last-kbd-macro (or macro last-kbd-macro))) + last-input-event))) (if end-macro - (kmacro-end-macro arg) - (call-last-kbd-macro arg #'kmacro-loop-setup-function)) + (kmacro-end-macro arg) ; modifies last-kbd-macro + (let ((last-kbd-macro (or macro last-kbd-macro))) + (call-last-kbd-macro arg #'kmacro-loop-setup-function))) (when (consp arg) (setq arg (car arg))) (when (and (or (null arg) (> arg 0)) @@ -658,7 +658,9 @@ others, use \\[kmacro-name-last-macro]." (define-key map (vector repeat-key) `(lambda () (interactive) (kmacro-call-macro ,(and kmacro-call-repeat-with-arg arg) - 'repeating nil ,last-kbd-macro))) + 'repeating nil ,(if end-macro + last-kbd-macro + (or macro last-kbd-macro))))) map))))) |