diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2008-04-21 11:49:55 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2008-04-21 11:49:55 +0000 |
commit | 5a0c547e919bded1d4966213beb9a3ae89b08698 (patch) | |
tree | 2dcda2ad23f564cb78685345dc86336d2d87a584 /Src/Zle/zle_refresh.c | |
parent | 500c402380849d40d6e0eabd6cc063add47a57af (diff) | |
download | zsh-5a0c547e919bded1d4966213beb9a3ae89b08698.tar.gz zsh-5a0c547e919bded1d4966213beb9a3ae89b08698.tar.xz zsh-5a0c547e919bded1d4966213beb9a3ae89b08698.zip |
24856: add IS_COMBINING() and IS_BASECHAR() and widen tests
Diffstat (limited to 'Src/Zle/zle_refresh.c')
-rw-r--r-- | Src/Zle/zle_refresh.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/Src/Zle/zle_refresh.c b/Src/Zle/zle_refresh.c index b9e5723c9..a9bc017f8 100644 --- a/Src/Zle/zle_refresh.c +++ b/Src/Zle/zle_refresh.c @@ -1245,13 +1245,12 @@ zrefresh(void) rpms.nvcs = rpms.s - nbuf[rpms.nvln = rpms.ln]; } } - if (isset(COMBININGCHARS) && iswalnum(*t)) { + if (isset(COMBININGCHARS) && IS_BASECHAR(*t)) { /* - * Look for combining characters: trailing punctuation - * characters with printing width zero. + * Look for combining characters. */ for (ichars = 1; tmppos + ichars < tmpll; ichars++) { - if (!iswpunct(t[ichars]) || wcwidth(t[ichars]) != 0) + if (!IS_COMBINING(t[ichars])) break; } } else @@ -2267,9 +2266,8 @@ singlerefresh(ZLE_STRING_T tmpline, int tmpll, int tmpcs) #ifdef MULTIBYTE_SUPPORT else if (iswprint(tmpline[t0]) && (width = wcwidth(tmpline[t0]) > 0)) { vsiz += width; - if (isset(COMBININGCHARS) && iswalnum(tmpline[t0])) { - while (t0 < tmpll-1 && iswpunct(tmpline[t0+1]) && - wcwidth(tmpline[t0+1]) == 0) + if (isset(COMBININGCHARS) && IS_BASECHAR(tmpline[t0])) { + while (t0 < tmpll-1 && IS_COMBINING(tmpline[t0+1])) t0++; } } @@ -2344,14 +2342,12 @@ singlerefresh(ZLE_STRING_T tmpline, int tmpll, int tmpcs) } else if (iswprint(tmpline[t0]) && (width = wcwidth(tmpline[t0])) > 0) { int ichars; - if (isset(COMBININGCHARS) && iswalnum(tmpline[t0])) { + if (isset(COMBININGCHARS) && IS_BASECHAR(tmpline[t0])) { /* - * Look for combining characters: trailing printable - * characters with printing width zero. + * Look for combining characters. */ for (ichars = 1; t0 + ichars < tmpll; ichars++) { - if (!iswpunct(tmpline[t0+ichars]) || - wcwidth(tmpline[t0+ichars]) != 0) + if (!IS_COMBINING(tmpline[t0+ichars])) break; } } else |