--- a/hgext/histedit.py Mon Oct 11 23:04:29 2021 -0700
+++ b/hgext/histedit.py Mon Oct 11 23:07:54 2021 -0700
@@ -1564,6 +1564,33 @@
rulesscr.noutrefresh()
+ def render_string(self, win, output, diffcolors=False):
+ maxy, maxx = win.getmaxyx()
+ length = min(maxy - 1, len(output))
+ for y in range(0, length):
+ line = output[y]
+ if diffcolors:
+ if line and line[0] == b'+':
+ win.addstr(
+ y, 0, line, curses.color_pair(COLOR_DIFF_ADD_LINE)
+ )
+ elif line and line[0] == b'-':
+ win.addstr(
+ y, 0, line, curses.color_pair(COLOR_DIFF_DEL_LINE)
+ )
+ elif line.startswith(b'@@ '):
+ win.addstr(y, 0, line, curses.color_pair(COLOR_DIFF_OFFSET))
+ else:
+ win.addstr(y, 0, line)
+ else:
+ win.addstr(y, 0, line)
+ win.noutrefresh()
+
+ def render_patch(self, win):
+ start = self.modes[MODE_PATCH][b'line_offset']
+ content = self.modes[MODE_PATCH][b'patchcontents']
+ self.render_string(win, content[start:], diffcolors=True)
+
def _chisteditmain(repo, rules, stdscr):
try:
@@ -1592,33 +1619,6 @@
except curses.error:
pass
- def renderstring(win, state, output, diffcolors=False):
- maxy, maxx = win.getmaxyx()
- length = min(maxy - 1, len(output))
- for y in range(0, length):
- line = output[y]
- if diffcolors:
- if line and line[0] == b'+':
- win.addstr(
- y, 0, line, curses.color_pair(COLOR_DIFF_ADD_LINE)
- )
- elif line and line[0] == b'-':
- win.addstr(
- y, 0, line, curses.color_pair(COLOR_DIFF_DEL_LINE)
- )
- elif line.startswith(b'@@ '):
- win.addstr(y, 0, line, curses.color_pair(COLOR_DIFF_OFFSET))
- else:
- win.addstr(y, 0, line)
- else:
- win.addstr(y, 0, line)
- win.noutrefresh()
-
- def renderpatch(win, state):
- start = state.modes[MODE_PATCH][b'line_offset']
- content = state.modes[MODE_PATCH][b'patchcontents']
- renderstring(win, state, content[start:], diffcolors=True)
-
def drawvertwin(size, y, x):
win = curses.newwin(size[0], size[1], y, x)
y += size[0]
@@ -1675,9 +1675,9 @@
helpwin.erase()
mainwin.erase()
if curmode == MODE_PATCH:
- renderpatch(mainwin, state)
+ state.render_patch(mainwin)
elif curmode == MODE_HELP:
- renderstring(mainwin, state, __doc__.strip().splitlines())
+ state.render_string(mainwin, __doc__.strip().splitlines())
else:
state.render_rules(mainwin)
state.render_commit(commitwin)