Comments
Patch
@@ -42,12 +42,12 @@ def userrcpath():
else:
return [os.path.expanduser('~/.hgrc')]
-def termwidth(ui):
+def termsize(ui):
try:
import termios
TIOCGWINSZ = termios.TIOCGWINSZ # unavailable on IRIX (issue3449)
except (AttributeError, ImportError):
- return 80
+ return 80, 24
for dev in (ui.ferr, ui.fout, ui.fin):
try:
@@ -58,9 +58,9 @@ def termwidth(ui):
if not os.isatty(fd):
continue
arri = fcntl.ioctl(fd, TIOCGWINSZ, '\0' * 8)
- width = array.array('h', arri)[1]
- if width > 0:
- return width
+ height, width = array.array('h', arri)[:2]
+ if width > 0 and height > 0:
+ return width, height
except ValueError:
pass
except IOError as e:
@@ -68,4 +68,4 @@ def termwidth(ui):
pass
else:
raise
- return 80
+ return 80, 24
@@ -39,7 +39,7 @@ else:
systemrcpath = scmplatform.systemrcpath
userrcpath = scmplatform.userrcpath
-termwidth = scmplatform.termwidth
+termsize = scmplatform.termsize
class status(tuple):
'''Named tuple with a list of files per status. The 'deleted', 'unknown'
@@ -53,5 +53,5 @@ def userrcpath():
path.append(os.path.join(userprofile, '.hgrc'))
return path
-def termwidth(ui):
- return win32.termwidth()
+def termsize(ui):
+ return win32.termsize()
@@ -822,7 +822,7 @@ class ui(object):
return int(encoding.environ['COLUMNS'])
except ValueError:
pass
- return scmutil.termwidth(self)
+ return scmutil.termsize(self)[0]
def formatted(self):
'''should formatted output be used?
@@ -347,23 +347,25 @@ def hidewindow():
pid = _kernel32.GetCurrentProcessId()
_user32.EnumWindows(_WNDENUMPROC(callback), pid)
-def termwidth():
+def termsize():
# cmd.exe does not handle CR like a unix console, the CR is
# counted in the line length. On 80 columns consoles, if 80
# characters are written, the following CR won't apply on the
# current line but on the new one. Keep room for it.
width = 80 - 1
+ height = 25
# Query stderr to avoid problems with redirections
screenbuf = _kernel32.GetStdHandle(
_STD_ERROR_HANDLE) # don't close the handle returned
if screenbuf is None or screenbuf == _INVALID_HANDLE_VALUE:
- return width
+ return width, height
csbi = _CONSOLE_SCREEN_BUFFER_INFO()
if not _kernel32.GetConsoleScreenBufferInfo(
screenbuf, ctypes.byref(csbi)):
- return width
+ return width, height
width = csbi.srWindow.Right - csbi.srWindow.Left # don't '+ 1'
- return width
+ height = csbi.srWindow.Bottom - csbi.srWindow.Top + 1
+ return width, height
def _1stchild(pid):
'''return the 1st found child of the given pid