Replace RuneWidth to StringWidth to handle grapheme clusters

Fix #2482
This commit is contained in:
Junegunn Choi
2021-05-14 11:43:32 +09:00
parent 4cd621e877
commit 3f75a8369f
6 changed files with 110 additions and 108 deletions

View File

@@ -1536,15 +1536,13 @@ func validateSign(sign string, signOptName string) error {
if sign == "" {
return fmt.Errorf("%v cannot be empty", signOptName)
}
widthSum := 0
for _, r := range sign {
if !unicode.IsGraphic(r) {
return fmt.Errorf("invalid character in %v", signOptName)
}
widthSum += runewidth.RuneWidth(r)
if widthSum > 2 {
return fmt.Errorf("%v display width should be up to 2", signOptName)
}
}
if runewidth.StringWidth(sign) > 2 {
return fmt.Errorf("%v display width should be up to 2", signOptName)
}
return nil
}