diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2006-08-11 21:30:38 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2006-08-11 21:30:38 +0000 |
commit | 2ccad2310ef04e5dff8a3717182cb7b065553185 (patch) | |
tree | 4a044bf7e5be5a1ac94d75e94e9a1b00ca3598e3 /Src/utils.c | |
parent | 36c7a0a0b351c6a1d3cc51f7947e4c929e2f8aa8 (diff) | |
download | zsh-2ccad2310ef04e5dff8a3717182cb7b065553185.tar.gz zsh-2ccad2310ef04e5dff8a3717182cb7b065553185.tar.xz zsh-2ccad2310ef04e5dff8a3717182cb7b065553185.zip |
22599: use wide character widths in completion
Diffstat (limited to 'Src/utils.c')
-rw-r--r-- | Src/utils.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Src/utils.c b/Src/utils.c index 8fdf2c0ab..2bfae667c 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -3937,11 +3937,13 @@ mb_metacharlenconv(const char *s, wint_t *wcp) * Total number of multibyte characters in metafied string s. * Same answer as iterating mb_metacharlen() and counting calls * until end of string. + * + * If width is 1, return total character width rather than number. */ /**/ int -mb_metastrlen(char *ptr) +mb_metastrlen(char *ptr, int width) { char inchar, *laststart; size_t ret; @@ -3971,9 +3973,12 @@ mb_metastrlen(char *ptr) /* Reset, treat as single character */ memset(&mb_shiftstate, 0, sizeof(mb_shiftstate)); ptr = laststart + (*laststart == Meta) + 1; - } + num++; + } else if (width) + num += wcwidth(wc); + else + num++; laststart = ptr; - num++; num_in_char = 0; } } |