1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-01 21:51:40 +02:00

53294: fix multibyte handling in "select" prompts

This commit is contained in:
Bart Schaefer 2025-01-03 09:18:23 -08:00
parent 3f43a2ffd1
commit 263659acb7
2 changed files with 19 additions and 3 deletions

View file

@ -1,3 +1,7 @@
2025-01-03 Bart Schaefer <schaefer@zsh.org>
* 53294: Src/loop.c: fix multibyte handling in "select" prompts
2025-01-03 Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
* 53293: Doc/Zsh/compsys.yo, Doc/Zsh/index.yo, Doc/Zsh/manual.yo:

View file

@ -351,9 +351,16 @@ selectlist(LinkList l, size_t start)
zleentry(ZLE_CMD_TRASH);
arr = hlinklist2array(l, 0);
for (ap = arr; *ap; ap++)
if (strlen(*ap) > longest)
longest = strlen(*ap);
for (ap = arr; *ap; ap++) {
#ifdef MB_METASTRWIDTH
int aplen = MB_METASTRWIDTH(*ap);
#else
int aplen = 0;
(void) unmetafy(*ap, &aplen);
#endif
if (aplen > longest)
longest = aplen;
}
t0 = ct = ap - arr;
longest++;
while (t0)
@ -368,7 +375,12 @@ selectlist(LinkList l, size_t start)
for (t1 = start; t1 != colsz && t1 - start < zterm_lines - 2; t1++) {
ap = arr + t1;
do {
#ifdef MB_METASTRWIDTH
size_t t2 = MB_METASTRWIDTH(*ap) + 2;
(void) unmetafy(*ap, NULL);
#else
size_t t2 = strlen(*ap) + 2;
#endif
int t3;
fprintf(stderr, "%d) %s", t3 = ap - arr + 1, *ap);