From a0ae5fc5349063fb9b0a3de04be555b3757c1f4b Mon Sep 17 00:00:00 2001 From: Yang Zhang Date: Mon, 31 Dec 2018 08:53:11 +0800 Subject: Fix incorrect wrap of mixed wide and ascii chars --- util/text/text.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'util/text/text.go') 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 } -- cgit