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

Yuya Nishihara yuya at tcha.org
Mon Mar 27 08:18:52 EDT 2017


On Sun, 26 Mar 2017 14:05:35 -0400, Matt Harbison wrote:
> 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?

Sure. It will be far from trivial.


More information about the Mercurial-devel mailing list