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 | |
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')
-rw-r--r-- | Src/Zle/zle_move.c | 18 | ||||
-rw-r--r-- | Src/Zle/zle_refresh.c | 20 |
2 files changed, 15 insertions, 23 deletions
diff --git a/Src/Zle/zle_move.c b/Src/Zle/zle_move.c index 2db703051..9b35660f1 100644 --- a/Src/Zle/zle_move.c +++ b/Src/Zle/zle_move.c @@ -54,22 +54,20 @@ alignmultiwordleft(int *pos, int setpos) if (!isset(COMBININGCHARS) || loccs == zlell || loccs == 0) return 0; - /* need to be on zero-width punctuation character */ - if (!iswpunct(zleline[loccs]) || wcwidth(zleline[loccs]) != 0) + /* need to be on combining character */ + if (!IS_COMBINING(zleline[loccs])) return 0; /* yes, go left */ loccs--; for (;;) { - /* second test here is paranoia */ - if (iswalnum(zleline[loccs]) && wcwidth(zleline[loccs]) > 0) { + if (IS_BASECHAR(zleline[loccs])) { /* found start position */ if (setpos) *pos = loccs; return 1; - } else if (!iswpunct(zleline[loccs]) || - wcwidth(zleline[loccs]) != 0) { + } else if (!IS_COMBINING(zleline[loccs])) { /* no go */ return 0; } @@ -103,7 +101,7 @@ alignmultiwordright(int *pos, int setpos) while (loccs < zlell) { /* Anything other than a combining char will do here */ - if (!iswpunct(zleline[loccs]) || wcwidth(zleline[loccs]) != 0) { + if (!IS_COMBINING(zleline[loccs])) { if (setpos) *pos = loccs; return 1; @@ -221,16 +219,14 @@ backwardmetafiedchar(char *start, char *endptr, convchar_t *retchr) *retchr = wc; return ptr; } - /* HERE: test for combining char, fix when test changes */ - if (!iswpunct(wc) || wcwidth(wc) != 0) { + if (!IS_COMBINING(wc)) { /* not a combining character... */ if (last) { /* * ... but we were looking for a suitable base character, * test it. */ - /* HERE this test will change too */ - if (iwsalnum(wc) && wcwidth(wc) > 0) { + if (IS_BASECHAR(wc)) { /* * Yes, this will do. */ 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 |