I picked "#<image>" not because I think it is a good way to print,
but just so that there is something there to be easily changed later,
when someone who has an opinion decides to change it.
string->lib-path asks it to use, but for both GUI and non-GUI mode
also refactored that code to move it into a separate file so
eventually can add a drdr test for it
so that it changes immediately when the black-on-white and
white-on-black buttons are pushed in the preferences dialog
- expanded the color preferences api a little
to allow the specification of background colors
in addition to the foreground/style information
already there
- changed the test coverage style so that the colors are
settable in the preferences dialog
closes PR 11704
Specifically, when there is an error in the namespace require (say if one of the teachpack
files gets corrupted (because you use a script that monkeys around in the installation, say,
and things go wrong)) then the first-opened method does not return normally, but raises
an exception. This, so far, is not a problem, but it appears that there is a bug in the
implementation of the drracket repl io ports that causes them to deadlock when flushing
the error port under certain conditions (I'm not sure what is really going on with this bug,
but I am observing a call to flush that fails to return) and the error-display-handler
for the teaching languages flushes the output port.
This change just avoids printing the error and so the error display handler is not called
in the fragile state. This change goes back to exactly what was happening in 5.0.2,
at least as far as the teaching language's first-opened method is concerned.
So, if this seems okay, I'd like to suggest it be included in the release.
queue-callback / execute callback dance; also, change the behavior
a little bit so that it works a little bit more like the rest of the
DrRacket languages; in particular, the initialization of the REPL
now only happens when a window is first opened or a new tab is first
created, but not at other times (ie not when the language changes;
when the language changes, we just keep the REPL state the same and
show a warning like before)
This change also required a change to the way the repl is initialized
and a slight change to the behavior of the first-opened method. Specifically,
it is now called in a slightly better context so that errors that
happen look like errors in the user's program. The only other use of
the first-opened method in the tree was to initialize the teachpacks
in the teaching languages and this new behavior is also an improvement
there.