diff options
author | Yang Zhang <yang_zhang@iapcm.ac.cn> | 2018-12-31 08:53:11 +0800 |
---|---|---|
committer | Yang Zhang <yang_zhang@iapcm.ac.cn> | 2018-12-31 08:53:11 +0800 |
commit | a0ae5fc5349063fb9b0a3de04be555b3757c1f4b (patch) | |
tree | 134626c3186b0ff0493c41aded97d3525809e289 /util/text/text.go | |
parent | f22f9b7083ff65fb7abe00ea2fb7343a1b68c59d (diff) | |
download | git-bug-a0ae5fc5349063fb9b0a3de04be555b3757c1f4b.tar.gz |
Fix incorrect wrap of mixed wide and ascii chars
Diffstat (limited to 'util/text/text.go')
-rw-r--r-- | util/text/text.go | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/util/text/text.go b/util/text/text.go index 0447bde1..f8062bc6 100644 --- a/util/text/text.go +++ b/util/text/text.go @@ -151,10 +151,18 @@ func softwrapLine(s string, w int) string { var chunks []string var word string wordType := NONE + flushWord := func() { + chunks = append(chunks, word) + word = "" + wordType = NONE + } for _, r := range []rune(newStr) { // A WIDE_CHAR itself constitutes a group. thisType := runeType(r) if thisType == WIDE_CHAR { + if wordType != NONE { + flushWord() + } chunks = append(chunks, string(r)) continue } @@ -162,7 +170,7 @@ func softwrapLine(s string, w int) string { // char with different type or end of string. if thisType != wordType { if wordType != NONE { - chunks = append(chunks, word) + flushWord() } word = string(r) wordType = thisType @@ -171,7 +179,7 @@ func softwrapLine(s string, w int) string { } } if word != "" { - chunks = append(chunks, word) + flushWord() } var line string = "" @@ -187,7 +195,7 @@ func softwrapLine(s string, w int) string { line += chunks[len(chunks)-1] chunks = chunks[:len(chunks)-1] width += wl - if width == w && len(chunks) > 0{ + if width == w && len(chunks) > 0 { line += "\n" width = 0 } |