Fix #1146: TextWrap vs words 1-character shorter than the width.

Patch by Quentin Gallet-Gilles.
This commit is contained in:
Georg Brandl 2008-01-19 19:48:19 +00:00
parent 14404b68d8
commit c6fde7293e
3 changed files with 22 additions and 1 deletions

View File

@ -398,6 +398,19 @@ How *do* you spell that odd word, anyways?
' o'], ' o'],
subsequent_indent = ' '*15) subsequent_indent = ' '*15)
# bug 1146. Prevent a long word to be wrongly wrapped when the
# preceding word is exactly one character shorter than the width
self.check_wrap(self.text, 12,
['Did you say ',
'"supercalifr',
'agilisticexp',
'ialidocious?',
'" How *do*',
'you spell',
'that odd',
'word,',
'anyways?'])
def test_nobreak_long(self): def test_nobreak_long(self):
# Test with break_long_words disabled # Test with break_long_words disabled
self.wrapper.break_long_words = 0 self.wrapper.break_long_words = 0

View File

@ -173,7 +173,12 @@ class TextWrapper:
Handle a chunk of text (most likely a word, not whitespace) that Handle a chunk of text (most likely a word, not whitespace) that
is too long to fit in any line. is too long to fit in any line.
""" """
space_left = max(width - cur_len, 1) # Figure out when indent is larger than the specified width, and make
# sure at least one character is stripped off on every pass
if width < 1:
space_left = 1
else:
space_left = width - cur_len
# If we're allowed to break long words, then do so: put as much # If we're allowed to break long words, then do so: put as much
# of the next chunk onto the current line as will fit. # of the next chunk onto the current line as will fit.

View File

@ -369,6 +369,9 @@ Core and builtins
Library Library
------- -------
- #1146: fix how textwrap breaks a long word that would start in the
last column of a line.
- #1693149: trace.py --ignore-module - accept multiple comma-separated - #1693149: trace.py --ignore-module - accept multiple comma-separated
modules to be given. modules to be given.