diff lisp/repeat.el @ 23474:242836a572c4

(repeat): Handle keyboard macros properly. Handle new prefix arg after self-insert command. Don't include cl even at compile time. (repeat): Avoid using `loop'.
author Richard M. Stallman <rms@gnu.org>
date Fri, 16 Oct 1998 19:40:12 +0000
parents f47c04fb4aab
children d2de3907a920
line wrap: on
line diff
--- a/lisp/repeat.el	Fri Oct 16 19:20:55 1998 +0000
+++ b/lisp/repeat.el	Fri Oct 16 19:40:12 1998 +0000
@@ -93,8 +93,6 @@
 
 ;;; Code:
 
-(eval-when-compile (require 'cl))
-
 ;;;;; ************************* USER OPTIONS ************************** ;;;;;
 
 (defcustom repeat-too-dangerous '(kill-this-buffer)
@@ -277,9 +275,20 @@
                                      "inserted before auto-fill"
                                      "clobbered it, sorry")))))))
             (setq repeat-num-input-keys-at-self-insert num-input-keys)
-            (loop repeat (prefix-numeric-value repeat-arg) do
-                  (repeat-self-insert insertion)))
-        (call-interactively real-last-command)))
+	    ;; If the self-insert had a repeat count, INSERTION
+	    ;; 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))
+	    (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))))
     (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'