Chris Hanson [Fri, 13 Aug 1993 23:20:57 +0000 (23:20 +0000)]
Alter WITH-READ-ONLY-DEFEATED so that it defeats read-only intervals
within the group. Additionally, eliminate several instances of
GROUP-INDEX: variables to make later transition away from
DEFINE-NAMED-STRUCTURE easier.
Chris Hanson [Fri, 13 Aug 1993 00:12:45 +0000 (00:12 +0000)]
Use new procedure STACK-FRAME/REPL-EVAL-BOUNDARY? to detect standard
REPL evaluation boundary frames. This replaces crufty mechanism that
was previously in use here.
Chris Hanson [Fri, 13 Aug 1993 00:03:24 +0000 (00:03 +0000)]
Implement WITH-REPL-EVAL-BOUNDARY and STACK-FRAME/REPL-EVAL-BOUNDARY?
to mark the boundary between stack frames that are part of the REPL
and those that are part of the expression being evaluated by the REPL.
This marker frame is a "subproblem" frame because that is the easiest
way to make it visible to the debuggers, but operationally it is a
"reduction" frame.
The runtime system's debugger currently ignores these marker frames;
at some point it should be modified to do something with them.
Chris Hanson [Thu, 12 Aug 1993 08:32:46 +0000 (08:32 +0000)]
Use new operation, CURRENT-EXPRESSION-CONTEXT, to find out where the
expression being rewritten came from. Use this contextual information
to restrict the generation of definition messages so that they only
occur for expressions evaluated directly in the repl buffer.
Chris Hanson [Thu, 12 Aug 1993 08:27:34 +0000 (08:27 +0000)]
Add a new operation on the interface port, CURRENT-EXPRESSION-CONTEXT,
that returns a context description associated with the expression most
recently read from the port. The context description is a symbol
which says where the expression came from. This information will be
used by the 6.001 code to make the generation of special definition
messages sensitive to the context.
Chris Hanson [Thu, 12 Aug 1993 07:40:36 +0000 (07:40 +0000)]
Change handling of command prompts so that only the standard prompts
are ignored; other prompts are printed. The standard prompts can also
be printed by changing the value of a flag. The set of standard
prompts is defined by a list which can be augmented. These changes
make the prompt argument of PROMPT-FOR-COMMAND-EXPRESSION useful.
Chris Hanson [Wed, 11 Aug 1993 19:07:12 +0000 (19:07 +0000)]
Supply missing argument to outf_fatal in TERM_SIGNAL handler. Make
termination message for TERM_HALT appear on stdout, since it is not
error information.
Chris Hanson [Wed, 4 Aug 1993 22:21:35 +0000 (22:21 +0000)]
The utility procedure `strcmp_ci' had a built-in assumption that the
input strings contained no uppercase letters. This is not the case.
The procedure `toupper' is guaranteed to work on all characters iff
the implementation is ANSI compliant. The procedure `_toupper' (ant
`toupper' in non-ANSI implementations) is guaranteed to work _only_ on
lowercase letters.
Chris Hanson [Wed, 4 Aug 1993 20:21:00 +0000 (20:21 +0000)]
Don't write a message when the working directory of the inferior REPL
is changed; this now happens at odd times and the messages are at best
distracting.
- Add prototypes for C library procedures.
- Primitive aliasing no longer requires the base primitive to be
present. When incorporating an alias to an inexistent primitive,
the inexistent primitive is declared first.
Add a mechanism for mapping input scode objects to output scode
objects. The original scode objects are passed through to the output,
and the *sf-associate* hook is called on the output scode and the
original scode. The default *sf-associate* does nothing.
Add a mechanism for mapping input scode objects to output scode
objects. The original scode objects are passed through to the output,
and the *sf-associate* hook is called on the output scode and the
original scode. The default *sf-associate* does nothing.
Chris Hanson [Mon, 2 Aug 1993 23:54:26 +0000 (23:54 +0000)]
Condition handlers can not invoke ABORT-CURRENT-COMMAND because the
handler for that condition might have been bound inside of the binding
for the condition being handled, and thus be unavailable at that time.
This is fixed by introducing a restart, ABORT-EDITOR-COMMAND, and an
associated procedure, RETURN-TO-COMMAND-LOOP. Condition handlers
should invoke this restart rather than signalling the
ABORT-CURRENT-COMMAND condition.
Chris Hanson [Mon, 2 Aug 1993 04:22:51 +0000 (04:22 +0000)]
* Change handling of ^G interrupts and of ABORT-CURRENT-COMMAND. Both
now use the condition system; ^G conditions are a specialization of
ABORT-CURRENT-COMMAND conditions. This change makes it easy to bind
some action to occur when a command is aborted for whatever reason.
Consequently, the procedure INTERCEPT-^G-INTERRUPTS has been
deleted.
* The inferior thread output mechanism has been modified to allow a
thread to request that the editor exit the keyboard reader and
return to the command reader. The request is phrased by the thread
output procedure returning 'FORCE-RETURN. This new mechanism is
used by the inferior REPL code to force the command reader to
immediately execute a command override for an unsolicited prompt.
* Aborting an unsolicited prompt causes the associated inferior thread
to execute ABORT->NEAREST.
* Inferior REPL buffers now initialize their working directory to the
default directory of the selected buffer at the time the REPL buffer
is created.
* Inferior REPL buffers now have their own bindings of %EXIT and QUIT
that affect only the inferior thread. In particular, %EXIT kills
the inferior thread but leaves Scheme running; QUIT does nothing.
Chris Hanson [Mon, 2 Aug 1993 03:06:38 +0000 (03:06 +0000)]
* Change handling of ^G interrupts and of ABORT-CURRENT-COMMAND. Both
now use the condition system; ^G conditions are a specialization of
ABORT-CURRENT-COMMAND conditions. This change makes it easy to bind
some action to occur when a command is aborted for whatever reason.
Consequently, the procedure INTERCEPT-^G-INTERRUPTS has been
deleted.
* The inferior thread output mechanism has been modified to allow a
thread to request that the editor exit the keyboard reader and
return to the command reader. The request is phrased by the thread
output procedure returning 'FORCE-RETURN. This new mechanism is
used by the inferior REPL code to force the command reader to
immediately execute a command override for an unsolicited prompt.
* Aborting an unsolicited prompt causes the associated inferior thread
to execute ABORT->NEAREST.
* Inferior REPL buffers now initialize their working directory to the
default directory of the selected buffer at the time the REPL buffer
is created.
* Inferior REPL buffers now have their own bindings of %EXIT and QUIT
that affect only the inferior thread. In particular, %EXIT kills
the inferior thread but leaves Scheme running; QUIT does nothing.
Chris Hanson [Mon, 2 Aug 1993 02:50:40 +0000 (02:50 +0000)]
Add new procedure COMINT-RECORD-INPUT which is like RING-PUSH! except
that it doesn't push the string argument if it is the same as the one
on the top of the ring. This is usually desirable -- it's not
necessary to record more than one of a series of identical commands.
Chris Hanson [Sun, 1 Aug 1993 06:10:37 +0000 (06:10 +0000)]
Disallow selection of a deleted screen. Unfortunately this can happen
because MWM generates these two events in sequence when the "close"
window menu entry is selected:
1. WM_DELETE_WINDOW event on the given screen.
2. FocusIn event on the given screen. Yuck! Side effect of selecting
the menu button on the screen.
Chris Hanson [Sun, 1 Aug 1993 05:30:29 +0000 (05:30 +0000)]
If an inferior REPL generates an unsolicited prompt, perform the
prompt only when the REPL buffer is selected. If the buffer is not
selected, delay the prompt until selection occurs. What is still
missing is a notification mechanism to alert the user that the
inferior REPL needs attention.
Chris Hanson [Sun, 1 Aug 1993 00:16:08 +0000 (00:16 +0000)]
Change KEYBOARD-READ, KEYBOARD-PEEK, and KEYBOARD-PEEK-NO-HANG to
intercept "update" and "resize" events and to handle them rather than
returning them. Other events with potentially troublesome actions are
returned as before. Additionally, several places where input events
were discarded have been fixed -- input events must ALWAYS be handled.
Chris Hanson [Sat, 31 Jul 1993 03:34:12 +0000 (03:34 +0000)]
Make WORKING-DIRECTORY-PATHNAME and *DEFAULT-PATHNAME-DEFAULTS* be
different for each CMDL. Change SET-WORKING-DIRECTORY-PATHNAME! so
that it only changes the working directory of the Scheme process if
the CMDL is the initial top-level REPL.
The end result of these changes is to make the working directory of an
Edwin inferior REPL buffer be independent of the global working
directory.
Chris Hanson [Sat, 31 Jul 1993 03:11:56 +0000 (03:11 +0000)]
Make WORKING-DIRECTORY-PATHNAME and *DEFAULT-PATHNAME-DEFAULTS* be
different for each CMDL. Change SET-WORKING-DIRECTORY-PATHNAME! so
that it only changes the working directory of the Scheme process if
the CMDL is the initial top-level REPL.
The end result of these changes is to make the working directory of an
Edwin inferior REPL buffer be independent of the global working
directory.
Remove check to verify that the first entry of a directory is a
subdirectory. Root directories on FAT volumes do not have `.' and
`..' entries, so this is not guaranteed to be the case.