The old implementation used an account formatter, and was very
specialized. The new is done as a transaction filter, and works along
with everything else, eliminating bugs special to the equity report.
As a result, --wide is working again, and --wide-register-format has
been removed. Also, the following new options are recognized, for
controlling per-column formatting:
--date-width NUM
--payee-width NUM
--account-width NUM
--amount-width NUM
--total-width NUM
These fully generalize the previous --payee-as-account and such options,
which, for example, is now implemented to be the same as saying,
"--set-account payee".
To help with gathering specific reports:
- --payee-as-account copies the entry's payee field to the account,
allowing the subtotal report to show unique payees for each period.
- --comm-as-account copies the transaction's amount's commodity to the
account.
- --code-as-account copies the entry's code to the account
Also created aliases for some of these options, for conistency's sake:
- --commodity-as-payee is now an alias for --comm-as-payee
- --commodity-as-account is now an alias for --comm-as-account
Now one does:
parent->HANDLER(display_total_).set_expr("total");
Rather than what was required previously:
parent->HANDLER(display_total_).on("total");
parent->HANDLER(display_total_).expr = "total";
Created a new function, session_t::reread_journal_files, which throws
away all previous state data and reads in the same files again. This is
needed to allow Emacs to communicate with Ledger via the REPL, so that
it tell Ledger when it has made changes to the user's data file.
This can be used to format dates with a specific pattern, such as:
format_date(entry.date, "%Y/%m/%d")
This is used by the print command to ensure that Ledger is able to parse
back what it prints.
For example, "ledger eval options.limit" prints 0 (for false), but:
"ledger -l hello eval options.limit" print "hello"s, since the value of
options.limit, once set to a value, is that string. For flag options,
such as -Y, eval prints 0 if unset, and 1 if set.
This feature allows value expressions to be conditionalized based on the
presence of user options.