diff options
Diffstat (limited to 'Src/Zle')
-rw-r--r-- | Src/Zle/complist.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/Src/Zle/complist.c b/Src/Zle/complist.c index 8aeb6c3b8..39ac782eb 100644 --- a/Src/Zle/complist.c +++ b/Src/Zle/complist.c @@ -662,7 +662,9 @@ clprintfmt(char *p, int ml) initiscol(); - for (; *p; p++) { + while (*p) { + convchar_t chr; + int chrlen = MB_METACHARLENCONV(p, &chr); doiscol(i++); cc++; if (*p == '\n') { @@ -673,11 +675,16 @@ clprintfmt(char *p, int ml) if (ml == mlend - 1 && (cc % zterm_columns) == zterm_columns - 1) return 0; - if (*p == Meta) { + while (chrlen) { + if (*p == Meta) { + p++; + chrlen--; + putc(*p ^ 32, shout); + } else + putc(*p, shout); + chrlen--; p++; - putc(*p ^ 32, shout); - } else - putc(*p, shout); + } if ((beg = !(cc % zterm_columns))) ml++; if (mscroll && !(cc % zterm_columns) && |