[PATCH 4 of 4] ui: rerun color.setup() once the pager has spawned to honor 'color.pagermode'

Matt Harbison mharbison72 at gmail.com
Sun Mar 26 14:05:35 EDT 2017


On Sun, 26 Mar 2017 10:44:01 -0400, Yuya Nishihara <yuya at tcha.org> wrote:

> On Sun, 26 Mar 2017 00:41:07 -0400, Matt Harbison wrote:
>> # HG changeset patch
>> # User Matt Harbison <matt_harbison at yahoo.com>
>> # Date 1490483831 14400
>> #      Sat Mar 25 19:17:11 2017 -0400
>> # Node ID 4713a38672f2d0790477b6c22180bd453f61851d
>> # Parent  84bda5db69dbe3d550f45ccd6d6eda2aad760ee4
>> ui: rerun color.setup() once the pager has spawned to honor  
>> 'color.pagermode'
>>
>> Otherwise, ui.pageractive is False when color is setup in dispatch.py  
>> (without
>> --pager=on), and this config option is ignored.
>>
>> diff --git a/mercurial/ui.py b/mercurial/ui.py
>> --- a/mercurial/ui.py
>> +++ b/mercurial/ui.py
>> @@ -861,6 +861,12 @@
>>              # auto-detection of things being formatted.
>>              self.setconfig('ui', 'formatted', wasformatted, 'pager')
>>              self.setconfig('ui', 'interactive', False, 'pager')
>> +
>> +            # If pagermode differs from color.mode, reconfigure color  
>> now that
>> +            # pageractive is set.
>> +            cm = self._colormode
>> +            if cm != self.config('color', 'pagermode', cm):
>> +                color.setup(self)
>
> This also looks good. Maybe we can refactor color._modesetup() further  
> so that
> we can do something like
>
>   newmode = color.mode(self)
>   if self._colormode != newmode:
>       color.setup(self, newmode)

Is a follow up OK?  There are some warnings being printed in _modesetup()  
that I don't think we want firing more than once, so it may not be a  
trivial refactoring.


More information about the Mercurial-devel mailing list