color: colorize based on output labels instead of parsing output
By overriding ui.write(), ui.write_err(), ui.popbuffer(), and ui.label(),
the color extension can avoid parsing command output and simply colorize
output based on labels.
As before, the color extension provides a list of default colors for
core commands/labels. Other extensions can provide their own defaults by
specifying a colortable dict (similar to cmdtable).
In this process, --color is promoted to a global option and the deprecated
--no-color option is removed.
% create test repository
adding a
adding b
adding c
% churn separate directories
user1 1 ***************************************************************
% churn all
user3 3 ***************************************************************
user1 3 ***************************************************************
user2 2 ******************************************
% churn up to rev 2
user2 2 ***************************************************************
user1 1 ********************************
% churn with aliases
alias3 3 **************************************************************
alias1 3 **************************************************************
user2 2 *****************************************
% churn with .hgchurn
alias3 3 **************************************************************
alias1 3 **************************************************************
user2 2 *****************************************
% churn with column specifier
user3 3 ***********************
user1 3 ***********************
user2 2 ***************
% churn by hour
06 1 *****************
09 2 *********************************
12 4 ******************************************************************
13 1 *****************
% churn with separated added/removed lines
user1 +3/-1 +++++++++++++++++++++++++++++++++++++++++--------------
user3 +3/-0 +++++++++++++++++++++++++++++++++++++++++
user2 +2/-0 +++++++++++++++++++++++++++
% churn --diffstat with color
user1 +3/-1 [0;32m+++++++++++++++++++++++++++++++++++++++++[0m[0;31m--------------[0m
user3 +3/-0 [0;32m+++++++++++++++++++++++++++++++++++++++++[0m
user2 +2/-0 [0;32m+++++++++++++++++++++++++++[0m
% changeset number churn
user1 4 ***************************************************************
user3 3 ***********************************************
user2 2 ********************************
adding foo
test 0