diff --git a/lib/std/wordwrap.nim b/lib/std/wordwrap.nim index 9333f880be..7816d26dab 100644 --- a/lib/std/wordwrap.nim +++ b/lib/std/wordwrap.nim @@ -53,6 +53,8 @@ proc wrapWords*(s: string, maxLineWidth = 80, let wlen = olen(s, i, j) if wlen > spaceLeft: if splitLongWords and wlen > maxLineWidth: + if lastSep.len > 0 and spaceLeft > 0: + result.add(lastSep) var k = 0 while k < j - i: if spaceLeft <= 0: diff --git a/tests/stdlib/twordwrap.nim b/tests/stdlib/twordwrap.nim index 5d49477d3a..bd99735c6f 100644 --- a/tests/stdlib/twordwrap.nim +++ b/tests/stdlib/twordwrap.nim @@ -29,11 +29,11 @@ iaoenvlcyfglwckßqfgvwkßqgfvlwkßqfgvlwckßqvlwkgfUIαοιαοιαχολωχσ ξχλωωχαοεοιαεοαεοιαεοαεοιαοεσναοεκνρκψγκψφϵιηαααοε""" let longlongwordRes = """ abc uitdaeröägfßhydüäpydqfü,träpydqgpmüdträpydföägpydörztdüöäfguiaeowäzjdtrüöäp -psnrtuiydrözenrüöäpyfdqazpesnrtulocjtüöäzydgyqgfqfgprtnwjlcydkqgfüöezmäzydydqüü +psnrtuiydrözenrüöäpyfdqazpesnrtulocjtüö äzydgyqgfqfgprtnwjlcydkqgfüöezmäzydydqüü öäpdtrnvwfhgckdumböäpydfgtdgfhtdrntdrntydfogiayqfguiatrnydrntüöärtniaoeydfgaoeiq -fglwcßqfgxvlcwgtfhiaoenrsüöäapmböäptdrniaoydfglckqfhouenrtsüöäptrniaoeyqfgulocf +fglwcßqfgxvlcwgtfhiaoen rsüöäapmböäptdrniaoydfglckqfhouenrtsüöäptrniaoeyqfgulocf qclgwxßqflgcwßqfxglcwrniatrnmüböäpmöäbpümöäbpüöämpbaoestnriaesnrtdiaesrtdniaesdr -tnaetdriaoenvlcyfglwckßqfgvwkßqgfvlwkßqfgvlwckßqvlwkgfUIαοιαοιαχολωχσωχνωκψρχκψ +tnaetdr iaoenvlcyfglwckßqfgvwkßqgfvlwkßqfgvlwckßqvlwkgfUIαοιαοιαχολωχσωχνωκψρχκψ ρτιεαοσηζϵηζιοεννκεωνιαλωσωκνκψρκγτφγτχκγτεκργτιχνκιωχσιλωσλωχξλξλξωχωχ ξχλωωχαοεοιαεοαεοιαεοαεοιαοεσναοεκνρκψγκψφϵιηαααοε""" doAssert wrapWords(longlongword) == longlongwordRes