Mercurial > emacs
changeset 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 | 4c242b09e413 |
children | 6f03301d36a7 |
files | lisp/repeat.el |
diffstat | 1 files changed, 14 insertions(+), 5 deletions(-) [+] |
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'