[compat] Allow overriding by only COLUMNS or LINES in compat_get_terminal_size
Now the semantic of this function is identical to
shutil.get_terminal_size() in Python 3.3+. The new behavior also
corresponds to the old get_term_width(), which is removed in
003c69a84b
This commit is contained in:
parent
5495937f46
commit
13118a50b8
1 changed files with 15 additions and 9 deletions
|
@ -416,7 +416,7 @@ if hasattr(shutil, 'get_terminal_size'): # Python >= 3.3
|
|||
else:
|
||||
_terminal_size = collections.namedtuple('terminal_size', ['columns', 'lines'])
|
||||
|
||||
def compat_get_terminal_size():
|
||||
def compat_get_terminal_size(fallback=(80, 24)):
|
||||
columns = compat_getenv('COLUMNS', None)
|
||||
if columns:
|
||||
columns = int(columns)
|
||||
|
@ -428,14 +428,20 @@ else:
|
|||
else:
|
||||
lines = None
|
||||
|
||||
if columns <= 0 or lines <= 0:
|
||||
try:
|
||||
sp = subprocess.Popen(
|
||||
['stty', 'size'],
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
out, err = sp.communicate()
|
||||
lines, columns = map(int, out.split())
|
||||
_columns, _lines = map(int, out.split())
|
||||
except Exception:
|
||||
pass
|
||||
_columns, _lines = _terminal_size(*fallback)
|
||||
|
||||
if columns <= 0:
|
||||
columns = _columns
|
||||
if lines <= 0:
|
||||
lines = _lines
|
||||
return _terminal_size(columns, lines)
|
||||
|
||||
try:
|
||||
|
|
Loading…
Reference in a new issue