* fix sticky colors in styledWrite
* nimgrep: context printing, colorthemes and other
* add context printing (lines after and before a match)
* nimgrep: add exclude/include options
* nimgrep: improve error printing & symlink handling
* nimgrep: rename dangerous `-r` argument
* add a `--newLine` style option for starting matching/context
lines from a new line
* add color themes: 3 new themes besides default `simple`
* enable printing of multi-line matches with line numbers
* proper display of replace when there was another match replaced at
the same line / context block
* improve cmdline arguments error reporting
* Support setting foreground/background colors to terminal defaults
Adds fgDefault to ForegroundColor and bgDefault to BackgroundColor
enums.
For Windows console, the default foreground color is assumed to be
white, and the default background color black.
* Add default fg/bg color caching for Windows Console
This also fixes a bug in the styledWriteLine behavior where the background color
leaked onto the next newline if that command did not end with resetStyle.
Now it is not necessary to end styledWriteLine calls that set BackgroundColor to
end in resetStyle.
Also:
- Move the tests block to the end of the file
- Fix the older tests
- Add tests for existing styledEcho
- Add new tests for styledWrite
Fixes https://github.com/nim-lang/Nim/issues/8046.
\e[3m -> italic
\e[9m -> strikethrough
On terminals not supporting italic text, the text is shown in reverse instead,
and on terminals not supporting strikethrough text, the text is shown as is.
This is important if we want to write styled diagnostics to stderr, eg. some
tool outputting results to stdout, but writing styled error messages to stderr.
Previously this module was assuming we are writing only to stdout. Now all
module procs take file handle as first argument. Wrappers assuming stdout are
provided for backwards compatibility.
The new terminal.styledWriteLine(f, args) is provided and documented as
counterpart for unstyled plain writeLine(f, args).