Hledger.Utils.IO helpers have been updated and new ones have been
added (exitOnExceptions, exitWithError) to allow consistent display of
program errors whether compiled with GHC <9.10, GHC 9.10, or GHC >9.10.
The trailing newlines added by GHC 9.10 are gone,
and so is the "uncaught exception" output added by GHC 9.12.
Builds made with ghc 9.10+ and the 'debug' build flag, will show
(some kind of, partial) stack traces when the program ends with an
error. (And also will have ghc-debug support enabled.)
The stack traces will probably improve in due course.
--color now also works in a config file, like --pager, except for two
cases: it does not affect colouring of debug output, or the colouring
helpers used in the check recentassertions error message.
For brevity, and consistency with --conf.
--rules-file remains supported, as a hidden option.
hledger's main mode now supports the hidden legacy flags,
as the command modes do.
It's clearer to write command-specific flags after the command name
argument, but that's no longer required.
(Writing non-builtin, addon-specific flags after -- is still required).
Also, give up on "obey help/doc/version flags even if there's a bad
command/flag", it's too hard to do well.
When built with the ghcdebug flag and started with --debug=-1 (or -2
to pause at startup, or -3 to pause before exit), hledger can be
controlled by ghc-debug clients like ghc-debug-brick or a custom
ghc-debug query script.
Also, refactor version string code.
Note the headErr/tailErr calls will print stack traces if they fail
(small ones: five lines, one of which is the useful location info),
which may or may not be best UX.
I wanted a theme with roughly the same degree of colour as the
default but which was easier on my eyes late at night.
Signed-off-by: Jonathan Dowland <jon@dow.land>
Introduced or bumped dependencies:
- brick-2.1.1
- vty-6.1
- vty-crossplatform-0.4.0.0
- vty-windows-0.2.0.1 conditionally on windows (current version of
vty-crossplatform has 0.2.0.0 as a lower bound, need to put a newer version explcitly;
once we get a newer vty-crossplatform, we will be able to drop this conditional)
- vty-unix (indirectly via vty-crossplatform)