Prints stuff to an ad-hoc logging file when running the repl or terminal in development mode
Very handy for the common case where you're debugging terminal interactions
and cannot use
println because it will stomp all over your already messed
up terminal state and block debugging. With [[Debug]], you can have a
separate terminal open tailing the log file and log as verbosely as you
want without affecting the primary terminal you're using to interact with
A filter as an abstract class, letting you provide a [[filter]] instead of
op, automatically providing a good
.toString for debugging, and
providing a reasonable "place" inside the inheriting class/object to put
state or helpers or other logic associated with the filter.
The way you configure your terminal behavior; a trivial wrapper around a
function, though you should provide a good
.toString method to make
debugging easier. The [[TermInfo]] and [[TermAction]] types are its
interface to the terminal.
[[Filter]]s are composed sequentially: if a filter returns
None the next
filter is tried, while if a filter returns
Some that ends the cascade.
op function interacts with the terminal purely through
immutable case classes, the Filter itself is free to maintain its own state
and mutate it whenever, even when returning
None to continue the cascade.
A collection of helpers that to simpify the common case of building filters
A truly-lazy implementation of scala.Stream
One place to assign all the esotic control key input snippets to easy-to-remember names
The core logic around a terminal; it defines the base
through which anything (including basic cursor-navigation and typing)
interacts with the terminal.
Maintains basic invariants, such as "cursor should always be within the buffer", and "ansi terminal should reflect most up to date TermState"