changeset 24531:6f36bb11c7a5

Don't require advice. (repeat): Do function-indirection in check for kbd macro. In self-insert case, use the *last* char in INSERTION.
author Karl Heuer <kwzh@gnu.org>
date Tue, 30 Mar 1999 18:07:16 +0000
parents 14cc75ebfd7b
children 731dcf8c11dc
files lisp/repeat.el
diffstat 1 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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'