From: Jason Wilson <edu/mit/csail/zurich/jawilson>
Date: Thu, 19 Aug 1993 05:56:15 +0000 (+0000)
Subject: Rewrote the loop in KEYBOARD-MACRO-EXECUTE so that
X-Git-Tag: 20090517-FFI~8049
X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=8028133c79b781265cbcce0b6a9fce5b884c817b;p=mit-scheme.git

Rewrote the loop in KEYBOARD-MACRO-EXECUTE so that
CALL-WITH-CURRENT-CONTINUATION would get called just once per keyboard
macro.  I also made the call to COMMAND-READER supply an optional
arguement (#f) that wasn't being supplied before.
---

diff --git a/v7/src/edwin/kmacro.scm b/v7/src/edwin/kmacro.scm
index 8e27c94a2..d81380b10 100644
--- a/v7/src/edwin/kmacro.scm
+++ b/v7/src/edwin/kmacro.scm
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;	$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/kmacro.scm,v 1.38 1992/04/16 22:30:00 cph Exp $
+;;;	$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/kmacro.scm,v 1.39 1993/08/19 05:56:15 jawilson Exp $
 ;;;
 ;;;	Copyright (c) 1985, 1989-92 Massachusetts Institute of Technology
 ;;;
@@ -90,15 +90,18 @@
   (fluid-let ((*executing-keyboard-macro?* true)
 	      (*keyboard-macro-position*)
 	      (*keyboard-macro-continuation*))
-    (define (loop n)
-      (set! *keyboard-macro-position* *macro)
-      (if (call-with-current-continuation
-	   (lambda (c)
-	     (set! *keyboard-macro-continuation* c)
-	     (command-reader)))
-	  (cond ((zero? n) (loop 0))
-		((> n 1) (loop (-1+ n))))))
-    (if (not (negative? repeat)) (loop repeat))))
+    (call-with-current-continuation
+     (lambda (c)
+       (let ((n repeat))
+	 (set! *keyboard-macro-continuation*
+	       (lambda (v)
+		 (if (and v (positive? n))
+		     (begin
+		       (set! *keyboard-macro-position* *macro)
+		       (set! n (-1+ n))
+		       (command-reader #f))
+		     (c unspecific))))
+	 (*keyboard-macro-continuation* #t))))))
 
 (define (keyboard-macro-define name *macro)
   (string-table-put! named-keyboard-macros name last-keyboard-macro)