Mercurial > hg
changeset 7455:c9fd5474a707
color: add --color switch
--color works like GNU grep --color. --color=auto only colorizes output
for non-dumb terminals that are TTYs.
author | Brodie Rao <me+hg@dackz.net> |
---|---|
date | Wed, 26 Nov 2008 08:58:31 -0500 |
parents | 1d5ecaa47abb |
children | 79eb16db5e4a |
files | hgext/color.py |
diffstat | 1 files changed, 17 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/color.py Mon Dec 01 20:10:02 2008 -0800 +++ b/hgext/color.py Wed Nov 26 08:58:31 2008 -0500 @@ -49,7 +49,7 @@ qseries.missing = red bold ''' -import re, sys +import os, re, sys from mercurial import commands, extensions from mercurial.i18n import _ @@ -113,7 +113,7 @@ effects = _status_effects[status] if effects: lines[i] = render_effects(lines[i], *effects) - sys.stdout.write(lines[i] + delimiter) + ui.write(lines[i] + delimiter) return retval _status_abbreviations = { 'M': 'modified', @@ -154,7 +154,7 @@ effects = _patch_effects['applied'] else: effects = _patch_effects['unapplied'] - sys.stdout.write(render_effects(patch, *effects) + '\n') + ui.write(render_effects(patch, *effects) + '\n') return retval _patch_effects = { 'applied': ('blue', 'bold', 'underline'), @@ -171,13 +171,22 @@ def _setupcmd(ui, cmd, table, func, effectsmap): '''patch in command to command table and load effect map''' - def nocolor(orig, *args, **kwargs): - if kwargs['no_color']: - return orig(*args, **kwargs) - return func(orig, *args, **kwargs) + def nocolor(orig, *args, **opts): + + if (opts['no_color'] or opts['color'] == 'never' or + (opts['color'] == 'auto' and (os.environ.get('TERM') == 'dumb' + or not sys.__stdout__.isatty()))): + return orig(*args, **opts) + + if func is not None: + return func(orig, *args, **opts) + return orig(*args, **opts) entry = extensions.wrapcommand(table, cmd, nocolor) - entry[1].append(('', 'no-color', None, _("don't colorize output"))) + entry[1].extend([ + ('', 'color', 'auto', _("when to colorize (always, auto, or never)")), + ('', 'no-color', None, _("don't colorize output")), + ]) for status in effectsmap: effects = ui.config('color', cmd + '.' + status)