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.
Fix bug. The val register was not preserved around flonum calls.
(flo:+ (flo:sin x) (flo:expt x y))
was failing because the result of flo:expt (close-coded) was left in
val around the call to sin, and the stub (and C code, potentially)
were clobbering it.
Chris Hanson [Tue, 27 Jul 1993 00:46:19 +0000 (00:46 +0000)]
Don't allocate a new result vector to pass to SELECT-REGISTRY-TEST
each time that it is called. Instead, maintain a pool of these
vectors and pick one from the pool if it's available.
Chris Hanson [Mon, 19 Jul 1993 21:06:48 +0000 (21:06 +0000)]
When drawing cursor on highlighted text, and the cursor color is the
same as the foreground color, invert the cursor so that it appears
different from the highlighting.