From patchwork Tue Oct 12 17:07:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D11640: chistedit: move renderpatch() and dependencies onto state class From: phabricator X-Patchwork-Id: 49964 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Tue, 12 Oct 2021 17:07:11 +0000 martinvonz created this revision. Herald added a reviewer: durin42. Herald added a reviewer: hg-reviewers. Herald added a subscriber: mercurial-patches. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D11640 AFFECTED FILES hgext/histedit.py CHANGE DETAILS To: martinvonz, durin42, #hg-reviewers Cc: mercurial-patches, mercurial-devel diff --git a/hgext/histedit.py b/hgext/histedit.py --- a/hgext/histedit.py +++ b/hgext/histedit.py @@ -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)