aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog6
-rw-r--r--src/boot/translator.boot10
-rw-r--r--src/interp/i-syscmd.boot5
-rw-r--r--src/interp/sys-driver.boot18
4 files changed, 23 insertions, 16 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index e5565cb3..718bff89 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,11 @@
2008-07-11 Gabriel Dos Reis <gdr@cs.tamu.edu>
+ * interp/sys-driver.boot (initializeGlobalState): New.
+ (executeSpadScript): Use it.
+ (compileSpadLibrary): Likewise.
+ * interp/i-syscmd.boot (spool): Synchronize with standard output.
+ * boot/translator.boot (bpOutItem): Tidy.
+
* interp/nruncomp.boot (NRTencode): Don't encode enumerations.
(listofBoundVars): Enumerations don't bind any varaible.
diff --git a/src/boot/translator.boot b/src/boot/translator.boot
index b2b4ed15..2aee7c21 100644
--- a/src/boot/translator.boot
+++ b/src/boot/translator.boot
@@ -539,10 +539,12 @@ bpOutItem()==
$op := nil
bpComma() or bpTrap()
b:=bpPop1()
- EQCAR(b,"+LINE")=> bpPush [ b ]
- b is ["L%T",l,r] and IDENTP l =>
- bpPush [["DEFPARAMETER",l,r]]
- bpPush translateToplevel(b,false)
+ bpPush
+ EQCAR(b,"+LINE")=> [ b ]
+ b is ["L%T",l,r] and IDENTP l =>
+ $InteractiveMode => [["SETQ",l,r]]
+ [["DEFPARAMETER",l,r]]
+ translateToplevel(b,false)
shoeAddbootIfNec s ==
shoeAddStringIfNec('".boot",s)
diff --git a/src/interp/i-syscmd.boot b/src/interp/i-syscmd.boot
index 0c7d6258..297a8810 100644
--- a/src/interp/i-syscmd.boot
+++ b/src/interp/i-syscmd.boot
@@ -2451,13 +2451,18 @@ resetHighlight() ==
$specialCharacters := $saveSpecialchars
spool filename ==
+ -- Note: The base Lisp system may change the value of the standard
+ -- output stream as part of executing DRIBBLE(), so one must
+ -- ensure that traces are still sent to the spool.
null filename =>
DRIBBLE()
+ SETQ(_*TRACE_-OUTPUT_*,_*STANDARD_-OUTPUT_*)
TERPRI()
resetHighlight()
PROBE_-FILE car filename =>
systemError CONCAT('"file ", STRING car filename, '" already exists")
DRIBBLE car filename
+ SETQ(_*TRACE_-OUTPUT_*,_*STANDARD_-OUTPUT_*)
TERPRI()
clearHighlight()
diff --git a/src/interp/sys-driver.boot b/src/interp/sys-driver.boot
index 238042d1..d8bc74d5 100644
--- a/src/interp/sys-driver.boot
+++ b/src/interp/sys-driver.boot
@@ -176,8 +176,7 @@ SET_-RESTART_-HOOK() ==
)endif
"restart"
-++ execute Spad script
-executeSpadScript(progname,options,file) ==
+initializeGlobalState() ==
REROOT()
$IOindex := 1
$InteractiveFrame := makeInitialModemapFrame()
@@ -188,6 +187,10 @@ executeSpadScript(progname,options,file) ==
RESTART0()
$NEWSPAD := true
$SPAD := true
+
+++ execute Spad script
+executeSpadScript(progname,options,file) ==
+ initializeGlobalState()
if getOption(Option '"verbose",%systemOptions()) then
$verbose := true
$options := []
@@ -206,16 +209,7 @@ associateRequestWithFileType(Option '"script", '"input",
++ compiler Spad Library File.
compileSpadLibrary(progname,options,file) ==
- REROOT()
- $IOindex := 1
- $InteractiveFrame := makeInitialModemapFrame()
- loadExposureGroupData()
- initHist()
- initializeInterpreterFrameRing()
- $currentLine := nil
- RESTART0()
- $NEWSPAD := true
- $SPAD := true
+ initializeGlobalState()
$EchoLines := false
ECHO_-META : fluid := false
$verbose := false