D6131: crecord: redraw the screen when starting up chunkselector
spectral (Kyle Lippincott)
phabricator at mercurial-scm.org
Thu Mar 14 03:17:18 UTC 2019
spectral created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
Failure to do this can cause screen corruption like:
<headerline>
[X] filename.cc
<several blank lines>
<output from previous iteration of split that happened to be here>
I believe this might only happen in some terminals, and maybe only when using
the "alternate screen". Regardless of the exact conditions to reproduce, it
should be safe to always clear it when starting up and is probably the correct
thing to do anyway :)
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D6131
AFFECTED FILES
mercurial/crecord.py
CHANGE DETAILS
diff --git a/mercurial/crecord.py b/mercurial/crecord.py
--- a/mercurial/crecord.py
+++ b/mercurial/crecord.py
@@ -534,8 +534,6 @@
if util.safehasattr(signal, 'SIGTSTP'):
origsigtstp = signal.getsignal(signal.SIGTSTP)
try:
- import pdb
- pdb.set_trace()
curses.wrapper(chunkselector.main)
if chunkselector.initexc is not None:
raise chunkselector.initexc
@@ -1765,6 +1763,12 @@
except curses.error:
self.usecolor = False
+ # In some situations we may have some cruft left on the "alternate
+ # screen" from another program (or previous iterations of ourself), and
+ # we won't clear it if the scroll region is small enough to comfortably
+ # fit on the terminal.
+ self.stdscr.clear()
+
# available colors: black, blue, cyan, green, magenta, white, yellow
# init_pair(color_id, foreground_color, background_color)
self.initcolorpair(None, None, name="normal")
To: spectral, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list