Changes in appearance:
* Loading, dumping, and warning messages now preceded by ";".
* New prompts for debugger, where, error, and breakpoint.
* REP loops started by the debugger and where no longer have
distinctive prompts. Now they use the standard prompt.
* PROMPT-FOR-COMMAND-CHAR now echos the character it is prompting for.
Changes to port implementation:
* Standard output procedures like WRITE no longer flush the output
port after they write to it. Instead, they invoke the new operation
DISCRETIONARY-FLUSH-OUTPUT (if it exists). At present, only the
console defines this new operation to do anything -- thus the
console behaves the same as before, unlike other ports. The new
procedure FLUSH-OUTPUT is used to explicitly flush output ports.
* New port operations control the blocking and terminal modes of
ports:
PORT/INPUT-BLOCKING-MODE
PORT/SET-INPUT-BLOCKING-MODE
PORT/WITH-INPUT-BLOCKING-MODE
PORT/OUTPUT-BLOCKING-MODE
PORT/SET-OUTPUT-BLOCKING-MODE
PORT/WITH-OUTPUT-BLOCKING-MODE
PORT/INPUT-TERMINAL-MODE
PORT/SET-INPUT-TERMINAL-MODE
PORT/WITH-INPUT-TERMINAL-MODE
PORT/OUTPUT-TERMINAL-MODE
PORT/SET-OUTPUT-TERMINAL-MODE
PORT/WITH-OUTPUT-TERMINAL-MODE
* New input-port operation READ allows the port to define how a READ
is performed. This permits the implementation of ports that read
s-expressions directly.
Changes to CMDL/REPL implementation:
* CMDL-MESSAGE/ACTIVE now passes a port to its argument, rather than a
cmdl object.
* Incompatible changes to arguments and return values of PUSH-CMDL,
PUSH-REPL, MAKE-CMDL. The procedures no longer start the cmdl that
they create, but just return it. It must be explicitly started by
calling one of the new procedures CMDL/START or REPL/START.
* cmdl objects now have just one bidirectional port instead of two
unidirectional ports.
* The prompting procedures PROMPT-FOR-EXPRESSION,
PROMPT-FOR-COMMAND-CHAR, and PROMPT-FOR-CONFIRMATION no longer take
a cmdl object as their optional second argument -- instead they take
a port. The new procedure PROMPT-FOR-COMMAND-EXPRESSION is similar.
* cmdl objects now support custom operations of various kinds, to
allow the customization of behavior. The previous spawn-child
special operation has been eliminated.
Changes to DEBUG/WHERE implementation:
* Debugger command interface now passes a port to each command
procedure, in addition to the state object. The current input and
output ports are not bound to anything in particular while the
debugger is running.
* Arguments to debugger command procedures are now optional, so that
using X mode in the debugger is more convenient.
Changes to various hooks:
* Most of the hooks that were used by the Emacs interface have been
eliminated. That functionality is now provided by custom port
operations. Hooks that were affected:
debugger output
prompting
run and gc lights
repl presentation
* Definition of keyboard interrupt hooks changed: if the hooks are #F,
they are ignored, otherwise they are invoked. If the interrupt
handler hooks return, that means they declined to handle the
interrupt, and the standard action is taken.
* HOOK/BEFORE-RESTART has been replaced by HOOK/INVOKE-RESTART. The
new hook is used by INVOKE-RESTART as well as
INVOKE-RESTART-INTERACTIVELY, and it defaults to APPLY.
* PARSE-OBJECT/INTERNAL and PARSE-OBJECTs/INTERNAL eliminated.
30 files changed: