# HG changeset patch # User Karl Heuer # Date 922817236 0 # Node ID 6f36bb11c7a54b3912915f112681c366579a4019 # Parent 14cc75ebfd7bf5671b37c9fa8ee8d3f3f6b0b9a8 Don't require advice. (repeat): Do function-indirection in check for kbd macro. In self-insert case, use the *last* char in INSERTION. diff -r 14cc75ebfd7b -r 6f36bb11c7a5 lisp/repeat.el --- a/lisp/repeat.el Tue Mar 30 18:02:13 1999 +0000 +++ b/lisp/repeat.el Tue Mar 30 18:07:16 1999 +0000 @@ -271,16 +271,17 @@ ;; includes that many copies of the same character. ;; So use just the first character ;; and repeat it the right number of times. - (setq insertion (substring insertion 0 1)) + (setq insertion (substring insertion -1)) (let ((count (prefix-numeric-value repeat-arg)) (i 0)) (while (< i count) (repeat-self-insert insertion) (setq i (1+ i))))) - (if (or (stringp real-last-command) - (vectorp real-last-command)) - (execute-kbd-macro real-last-command) - (call-interactively real-last-command)))) + (let ((indirect (indirect-function real-last-command))) + (if (or (stringp indirect) + (vectorp indirect)) + (execute-kbd-macro real-last-command) + (call-interactively real-last-command))))) (when repeat-repeat-char ;; A simple recursion here gets into trouble with max-lisp-eval-depth ;; on long sequences of repetitions of a command like `forward-word'