# HG changeset patch # User Richard M. Stallman # Date 908566812 0 # Node ID 242836a572c4c182be82cd211d4ef0e9f8a68491 # Parent 4c242b09e413c22fab364d9bad11a6534228c305 (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'. diff -r 4c242b09e413 -r 242836a572c4 lisp/repeat.el --- 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'