Fix pretty display: don't re-wrap, account for gutter
This commit is contained in:
parent
39ae937ddc
commit
a1fa03615c
1 changed files with 18 additions and 5 deletions
23
harness.py
23
harness.py
|
|
@ -460,6 +460,12 @@ class Harness:
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
sys.stdout.buffer.flush()
|
sys.stdout.buffer.flush()
|
||||||
|
|
||||||
|
def line_number_chars(self, lines: list) -> int:
|
||||||
|
if len(lines) > 0:
|
||||||
|
return int(math.log(len(lines), 10)) + 1
|
||||||
|
else:
|
||||||
|
return 1
|
||||||
|
|
||||||
def render_lines(self, cols: int):
|
def render_lines(self, cols: int):
|
||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
|
|
@ -480,17 +486,24 @@ class Harness:
|
||||||
self.format_document(lines, self.document)
|
self.format_document(lines, self.document)
|
||||||
|
|
||||||
case DisplayMode.PRETTY:
|
case DisplayMode.PRETTY:
|
||||||
lines = self.pretty_document(cols)
|
line_number_chars = 1
|
||||||
|
while True:
|
||||||
|
width = cols - line_number_chars - 1
|
||||||
|
lines = self.pretty_document(width)
|
||||||
|
new_line_number_chars = self.line_number_chars(lines)
|
||||||
|
if new_line_number_chars == line_number_chars:
|
||||||
|
break
|
||||||
|
assert new_line_number_chars > line_number_chars
|
||||||
|
line_number_chars = new_line_number_chars
|
||||||
|
|
||||||
|
return [f"{i: >{line_number_chars}} {line}" for i, line in enumerate(lines)]
|
||||||
|
|
||||||
case _:
|
case _:
|
||||||
typing.assert_never(self.mode)
|
typing.assert_never(self.mode)
|
||||||
|
|
||||||
# Now that we know how many lines there are we can figure out how
|
# Now that we know how many lines there are we can figure out how
|
||||||
# many characters we need for the line number...
|
# many characters we need for the line number...
|
||||||
if len(lines) > 0:
|
line_number_chars = self.line_number_chars(lines)
|
||||||
line_number_chars = int(math.log(len(lines), 10)) + 1
|
|
||||||
else:
|
|
||||||
line_number_chars = 1
|
|
||||||
|
|
||||||
# ...which lets us wrap the lines appropriately.
|
# ...which lets us wrap the lines appropriately.
|
||||||
wrapper = textwrap.TextWrapper(
|
wrapper = textwrap.TextWrapper(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue