Creates a new representation for Rink's output in the form of a token tree. The tokens are arbitrary text that's tagged with a hint for their usage, such as numbers, units, etc.
This is then used in rink-cli to provide colored output, instead of the Display implementation that has been use until now.
Adds new config options for whether colors should be enabled (disabled by default), creating custom color themes, and enabling long-form output mode.
Long output is made possible by the ListBegin and ListSep token types. They indicate that something should be rendered as a list. The CLI can then use this to render lists using a Unicode bullet character, this is disabled by default.
Remaining tasks:
[x] Add unit tests for this new output mode.
[ ] Validate the color scheme on various different terminals to make sure the default color scheme is widely readable.
[x] Add coloring for error messages.
[ ] Make sure it addresses @mkroman's usecase for IRC coloring mentioned in #75.
Syntax highlighting for actual input as you type it in will be significantly more complicated, because the parser has to pass through span information and be made infallible. That should get done in a followup PR.
Switches to rustyline away from linefeed, for these reasons:
Supports colors in tab completion results.
Supports highlighting input text, although I don't use this yet.
More active maintenance, widely used.
Colors and long output mode both enabled, also a custom prompt set.
Creates a new representation for Rink's output in the form of a token tree. The tokens are arbitrary text that's tagged with a hint for their usage, such as numbers, units, etc.
This is then used in rink-cli to provide colored output, instead of the Display implementation that has been use until now.
Adds new config options for whether colors should be enabled (disabled by default), creating custom color themes, and enabling long-form output mode.
Long output is made possible by the ListBegin and ListSep token types. They indicate that something should be rendered as a list. The CLI can then use this to render lists using a Unicode bullet character, this is disabled by default.
Remaining tasks:
Syntax highlighting for actual input as you type it in will be significantly more complicated, because the parser has to pass through span information and be made infallible. That should get done in a followup PR.
Switches to rustyline away from linefeed, for these reasons:
Colors and long output mode both enabled, also a custom prompt set.