[PATCH] color: use ui.formatted() to test TTYness, not sys.stdout.isatty()

Augie Fackler durin42 at gmail.com
Sun May 1 05:23:00 CDT 2011



On May 1, 2011, at 12:14 PM, Brodie Rao wrote:
> 
> # HG changeset patch
> # User Brodie Rao <brodie at bitheap.org>
> # Date 1304244862 -7200
> # Node ID de9e9fed0d5ed6eb6f35ad7f387e3c447b4e22e8
> # Parent  3e9e02a41dfb0a85ec0968681e416d579ee875db
> color: use ui.formatted() to test TTYness, not sys.stdout.isatty()
> 
> This fixes the color extension not working with pager (broken in
> 877390020477). The pager extension already sets ui.formatted=True to
> allow this use case.

Works here for my emacs case, passes color tests and check-code.

> 
> diff --git a/hgext/color.py b/hgext/color.py
> --- a/hgext/color.py
> +++ b/hgext/color.py
> @@ -301,13 +301,15 @@ def uisetup(ui):
>     global _terminfo_params
>     if ui.plain():
>         return
> +
> +    formatted = (os.environ.get('TERM') != 'dumb' and ui.formatted())
>     mode = ui.config('color', 'mode', 'auto')
>     if mode == 'auto':
>         if os.name == 'nt' and 'TERM' not in os.environ:
>             # looks line a cmd.exe console, use win32 API or nothing
>             mode = w32effects and 'win32' or 'none'
>         else:
> -            if getattr(sys.stdout, 'isatty', None) and sys.stdout.isatty():
> +            if not formatted:
>                 _terminfo_params = False
>             else:
>                 _terminfosetup(ui)
> @@ -332,8 +334,7 @@ def uisetup(ui):
>         auto = coloropt == 'auto'
>         always = util.parsebool(coloropt)
>         if (always or
> -            (always is None and
> -             (auto and (os.environ.get('TERM') != 'dumb' and ui_.formatted())))):
> +            (always is None and auto and formatted)):
>             colorui._colormode = mode
>             colorui.__bases__ = (ui_.__class__,)
>             ui_.__class__ = colorui




More information about the Mercurial-devel mailing list