[PATCH 7 of 7] crecord: use scmutil.termsize()
Yuya Nishihara
yuya at tcha.org
Fri Nov 4 03:49:02 EDT 2016
# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1476972992 -32400
# Thu Oct 20 23:16:32 2016 +0900
# Node ID afbe258b29cc994cfabf6dcc7a31be245c2bec2c
# Parent 5a6ee9257e4d6c67c6414b9d0f0fef35d3f2d545
# EXP-Topic stdio
crecord: use scmutil.termsize()
diff --git a/mercurial/crecord.py b/mercurial/crecord.py
--- a/mercurial/crecord.py
+++ b/mercurial/crecord.py
@@ -14,14 +14,13 @@ import locale
import os
import re
import signal
-import struct
-import sys
from .i18n import _
from . import (
encoding,
error,
patch as patchmod,
+ scmutil,
util,
)
stringio = util.stringio
@@ -52,11 +51,7 @@ patchhelptext = _("""#
try:
import curses
- import fcntl
- import termios
curses.error
- fcntl.ioctl
- termios.TIOCGWINSZ
except ImportError:
# I have no idea if wcurses works with crecord...
try:
@@ -75,8 +70,6 @@ def checkcurses(ui):
"""
return curses and ui.interface("chunkselector") == "curses"
-_origstdout = sys.__stdout__ # used by gethw()
-
class patchnode(object):
"""abstract class for patch graph nodes
(i.e. patchroot, header, hunk, hunkline)
@@ -473,18 +466,6 @@ def filterpatch(ui, chunks, chunkselecto
return (appliedhunklist, ret)
-def gethw():
- """
- magically get the current height and width of the window (without initscr)
-
- this is a rip-off of a rip-off - taken from the bpython code. it is
- useful / necessary because otherwise curses.initscr() must be called,
- which can leave the terminal in a nasty state after exiting.
- """
- h, w = struct.unpack(
- "hhhh", fcntl.ioctl(_origstdout, termios.TIOCGWINSZ, "\000"*8))[0:2]
- return h, w
-
def chunkselector(ui, headerlist):
"""
curses interface to get selection of chunks, and mark the applied flags
@@ -1259,7 +1240,7 @@ class curseschunkselector(object):
"handle window resizing"
try:
curses.endwin()
- self.yscreensize, self.xscreensize = gethw()
+ self.xscreensize, self.yscreensize = scmutil.termsize(self.ui)
self.statuswin.resize(self.numstatuslines, self.xscreensize)
self.numpadlines = self.getnumlinesdisplayed(ignorefolding=True) + 1
self.chunkpad = curses.newpad(self.numpadlines, self.xscreensize)
More information about the Mercurial-devel
mailing list