Mercurial > hg
changeset 33680:f9f28ee41cac
color: remove warnings if term is not formatted (==dumb or !ui.formatted())
If the user sets color.mode=terminfo, and then runs in the shell inside of emacs
(so TERM=dumb), the previous behavior was that it would warn about no terminfo
entry for setab/setaf, and then warn about 'failed to set color mode to
terminfo'. The first warning is silenced by carrying 'formatted' through to
_terminfosetup, the second is silenced by using 'formatted' instead of
ui.formatted().
If --color=on (or ui.color=always) is specified, this will still warn, since the
formatted boolean is set to true in these cases.
Differential Revision: https://phab.mercurial-scm.org/D223
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Thu, 03 Aug 2017 12:40:48 -0700 |
parents | 8fbd56a4073c |
children | 8626b44516c1 |
files | mercurial/color.py |
diffstat | 1 files changed, 5 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/color.py Thu Jul 27 16:09:26 2017 +0200 +++ b/mercurial/color.py Thu Aug 03 12:40:48 2017 -0700 @@ -130,7 +130,7 @@ def loadcolortable(ui, extname, colortable): _defaultstyles.update(colortable) -def _terminfosetup(ui, mode): +def _terminfosetup(ui, mode, formatted): '''Initialize terminfo data and the terminal if we're in terminfo mode.''' # If we failed to load curses, we go ahead and return. @@ -164,8 +164,8 @@ del ui._terminfoparams[key] if not curses.tigetstr('setaf') or not curses.tigetstr('setab'): # Only warn about missing terminfo entries if we explicitly asked for - # terminfo mode. - if mode == "terminfo": + # terminfo mode and we're in a formatted terminal. + if mode == "terminfo" and formatted: ui.warn(_("no terminfo entry for setab/setaf: reverting to " "ECMA-48 color\n")) ui._terminfoparams.clear() @@ -242,7 +242,7 @@ def modewarn(): # only warn if color.mode was explicitly set and we're in # a formatted terminal - if mode == realmode and ui.formatted(): + if mode == realmode and formatted: ui.warn(_('warning: failed to set color mode to %s\n') % mode) if realmode == 'win32': @@ -253,7 +253,7 @@ elif realmode == 'ansi': ui._terminfoparams.clear() elif realmode == 'terminfo': - _terminfosetup(ui, mode) + _terminfosetup(ui, mode, formatted) if not ui._terminfoparams: ## FIXME Shouldn't we return None in this case too? modewarn()