--- a/mercurial/debugcommands.py Tue Feb 28 11:13:25 2017 -0800
+++ b/mercurial/debugcommands.py Tue Feb 21 18:41:37 2017 +0100
@@ -31,6 +31,7 @@
bundle2,
changegroup,
cmdutil,
+ color,
commands,
context,
dagparser,
@@ -344,6 +345,51 @@
error = _(".hg/dirstate inconsistent with current parent's manifest")
raise error.Abort(error)
+@command('debugcolor',
+ [('', 'style', None, _('show all configured styles'))],
+ 'hg debugcolor')
+def debugcolor(ui, repo, **opts):
+ """show available color, effects or style"""
+ ui.write(('color mode: %s\n') % ui._colormode)
+ if opts.get('style'):
+ return _debugdisplaystyle(ui)
+ else:
+ return _debugdisplaycolor(ui)
+
+def _debugdisplaycolor(ui):
+ oldstyle = ui._styles.copy()
+ try:
+ ui._styles.clear()
+ for effect in color._effects.keys():
+ ui._styles[effect] = effect
+ if ui._terminfoparams:
+ for k, v in ui.configitems('color'):
+ if k.startswith('color.'):
+ ui._styles[k] = k[6:]
+ elif k.startswith('terminfo.'):
+ ui._styles[k] = k[9:]
+ ui.write(_('available colors:\n'))
+ # sort label with a '_' after the other to group '_background' entry.
+ items = sorted(ui._styles.items(),
+ key=lambda i: ('_' in i[0], i[0], i[1]))
+ for colorname, label in items:
+ ui.write(('%s\n') % colorname, label=label)
+ finally:
+ ui._styles.clear()
+ ui._styles.update(oldstyle)
+
+def _debugdisplaystyle(ui):
+ ui.write(_('available style:\n'))
+ width = max(len(s) for s in ui._styles)
+ for label, effects in sorted(ui._styles.items()):
+ ui.write('%s' % label, label=label)
+ if effects:
+ # 50
+ ui.write(': ')
+ ui.write(' ' * (max(0, width - len(label))))
+ ui.write(', '.join(ui.label(e, e) for e in effects.split()))
+ ui.write('\n')
+
@command('debugcommands', [], _('[COMMAND]'), norepo=True)
def debugcommands(ui, cmd='', *args):
"""list all available commands and options"""