[PATCH] ui: disable echo back of prompt input if ui is set to non-tty purposely

Yuya Nishihara yuya at tcha.org
Thu Oct 9 10:31:00 CDT 2014


On Thu, 09 Oct 2014 16:50:27 +0200, Mads Kiilerich wrote:
> On 10/09/2014 04:30 PM, Yuya Nishihara wrote:
> > On Thu, 9 Oct 2014 10:05:20 -0400, Augie Fackler wrote:
> >> On Wed, Oct 08, 2014 at 11:48:53PM +0900, Yuya Nishihara wrote:
> >>> # HG changeset patch
> >>> # User Yuya Nishihara <yuya at tcha.org>
> >>> # Date 1412769061 -32400
> >>> #      Wed Oct 08 20:51:01 2014 +0900
> >>> # Node ID 49193989bbd88445b156f0c6891610f34a56447f
> >>> # Parent  a1eb21f5caea4366310e32aa85248791d5bbfa0c
> >>> ui: disable echo back of prompt input if ui is set to non-tty purposely
> >>>
> >>> 9ab18a912c44 is nice for test output, but it also affects command-server
> >>> channel.  Command-server client shouldn't receive echo-back message, which
> >>> makes it harder to parse the output.
> >>>
> >>> diff --git a/mercurial/ui.py b/mercurial/ui.py
> >>> --- a/mercurial/ui.py
> >>> +++ b/mercurial/ui.py
> >>> @@ -684,7 +684,9 @@ class ui(object):
> >>>                   r = default
> >>>               # sometimes self.interactive disagrees with isatty,
> >>>               # show response provided on stdin when simulating
> >>> -            if not util.isatty(self.fin):
> >>> +            # but commandserver
> >> Should there be more of a thought here? Or is "but" a typo?
> > It seemed noisy to write long comment about commandserver here.
> 
> It could perhaps be more of a full sentence:
> 
>               # sometimes self.interactive disagrees with isatty,
>               # show response provided on stdin when simulating
>               # but not for commandserver and other scripting

Sounds nice, thanks.

> > Instead, I'm thinking of new internal flag to control the echo, and set
> > this flag off by commandserver.
> >
> >      if self.configbool('ui', 'promptecho', not util.isatty(self.fin)):
> >          self.write(r, "\n")
> 
> I assume command server uses plain? How about
> 
> if not util.isatty(self.fin) and not self.plain():

It depends. Libraries that have to parse the output will set HGPLAIN, but
there's a weird client that tries to mimic all behaviors of hg command.

Regards,


More information about the Mercurial-devel mailing list