diff options
author | Yang Zhang <yang_zhang@iapcm.ac.cn> | 2019-01-08 09:55:32 +0800 |
---|---|---|
committer | Yang Zhang <yang_zhang@iapcm.ac.cn> | 2019-01-08 09:55:32 +0800 |
commit | 8ea5c6b41de8a0ccdff245456c317a2ad98cd630 (patch) | |
tree | 9509b9bd382f800ce49e923aea4960b54db2b44d /util | |
parent | 2feb4ec21b875a9f444033fd81ee9af63e46819b (diff) | |
download | git-bug-8ea5c6b41de8a0ccdff245456c317a2ad98cd630.tar.gz |
Fix handling of long words
Diffstat (limited to 'util')
-rw-r--r-- | util/text/text.go | 11 | ||||
-rw-r--r-- | util/text/text_test.go | 8 |
2 files changed, 17 insertions, 2 deletions
diff --git a/util/text/text.go b/util/text/text.go index f59bdbfb..81cc870b 100644 --- a/util/text/text.go +++ b/util/text/text.go @@ -89,9 +89,16 @@ func softwrapLine(line string, textWidth int) string { width = 0 } } else if wl > textWidth { - left, right := splitWord(chunks[len(chunks)-1], textWidth) - line2 += left + "\n" + // NOTE: By default, long words are splited to fill the remaining space. + // But if the long words is the first non-space word in the middle of the + // line, preceeding spaces shall not be counted in word spliting. + splitWidth := textWidth - width + if strings.HasSuffix(line2, "\n"+strings.Repeat(" ", width)) { + splitWidth += width + } + left, right := splitWord(chunks[len(chunks)-1], splitWidth) chunks[len(chunks)-1] = right + line2 += left + "\n" width = 0 } else { line2 += "\n" diff --git a/util/text/text_test.go b/util/text/text_test.go index 7008589d..9bf21164 100644 --- a/util/text/text_test.go +++ b/util/text/text_test.go @@ -157,6 +157,14 @@ func TestWrapLeftPadded(t *testing.T) { 蚗佶庂咺丌,輀鈁乇彽洢溦洰氶乇构碨洐巿阹。`, 59, 4, }, + // Handle long unbreakable words in a full stentence + { + "OT: there are alternatives to maintainer-/user-set priority, e.g. \"[user pain](http://www.lostgarden.com/2008/05/improving-bug-triage-with-user-pain.html)\".", + ` OT: there are alternatives to maintainer-/user-set + priority, e.g. "[user pain](http://www.lostgarden.com/ + 2008/05/improving-bug-triage-with-user-pain.html)".`, + 58, 4, + }, } for i, tc := range cases { |