[PATCH 1 of 4] color: call curses.setupterm() earlier
Gregory Szorc
gregory.szorc at gmail.com
Sun Jul 9 23:46:14 UTC 2017
# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1499628062 25200
# Sun Jul 09 12:21:02 2017 -0700
# Node ID 129c9709980108beecfa1c02a52c679654de8b21
# Parent 4672db164c986da4442bd864cd044512d975c3f2
color: call curses.setupterm() earlier
It doesn't make sense to iterate over config options and set
ui._terminfoparams if curses.setupterm() will fail and we'll
just clear ui._terminfoparams. So move curses.setupterm()
before any ui._terminfoparams manipulation.
diff --git a/mercurial/color.py b/mercurial/color.py
--- a/mercurial/color.py
+++ b/mercurial/color.py
@@ -141,6 +141,13 @@ def _terminfosetup(ui, mode):
# Otherwise, see what the config file says.
if mode not in ('auto', 'terminfo'):
return
+
+ try:
+ curses.setupterm()
+ except curses.error:
+ ui._terminfoparams.clear()
+ return
+
ui._terminfoparams.update(_baseterminfoparams)
for key, val in ui.configitems('color'):
@@ -150,11 +157,6 @@ def _terminfosetup(ui, mode):
elif key.startswith('terminfo.'):
newval = (True, '', val.replace('\\E', '\x1b'))
ui._terminfoparams[key[9:]] = newval
- try:
- curses.setupterm()
- except curses.error as e:
- ui._terminfoparams.clear()
- return
for key, (b, e, c) in ui._terminfoparams.items():
if not b:
More information about the Mercurial-devel
mailing list