fix for syntax measure

This commit is contained in:
Will McGugan 2022-10-01 15:21:45 +01:00
parent 13dd9c2c2e
commit fe1ed5399e
3 changed files with 6 additions and 1 deletions

View File

@ -25,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fix missing `mode` property on file wrapper breaking uploads via `requests` https://github.com/Textualize/rich/pull/2495
- Fix mismatching default value of parameter `ensure_ascii` https://github.com/Textualize/rich/pull/2538
- Remove unused height parameter in `Layout` class https://github.com/Textualize/rich/pull/2540
- Fixed exception in Syntax.__rich_measure__ for empty files
### Changed

View File

@ -593,10 +593,11 @@ class Syntax(JupyterMixin):
if self.code_width is not None:
width = self.code_width + self._numbers_column_width + padding + 1
return Measurement(self._numbers_column_width, width)
lines = self.code.splitlines()
width = (
self._numbers_column_width
+ padding
+ max(cell_len(line) for line in self.code.splitlines())
+ (max(cell_len(line) for line in lines) if lines else 0)
)
if self.line_numbers:
width += 1

View File

@ -392,6 +392,9 @@ def test_syntax_measure():
code = Syntax("Hello, World", "python", code_width=20, line_numbers=True)
assert code.__rich_measure__(console, console.options) == Measurement(3, 24)
code = Syntax("", "python", code_width=20, line_numbers=True)
assert code.__rich_measure__(console, console.options) == Measurement(3, 24)
if __name__ == "__main__":
syntax = Panel.fit(