This patch fixes multiple bugs in countprompt. 1. Height off by one in the presence of meta characters at the end of the line. The following prompt has height 2 but countprompt used to return 3. PROMPT="${(pl.$COLUMNS..-.)}%f"$'\n' You can observe the effects of the bug by hitting esc-x followed by reset-prompt. 2. Width off by one when a line is broken in the middle of a wide character. Assuming COLUMNS=79, the following prompt has width 2 but countprompt used to return 0. Note that \u3050 has width 2. PROMPT="${(pl.40..\u3050.)}" zsh -df Press ctrl-r or type ls<tab> to observe the effects of the bug. 3. Width off by 1-7 when a line is broken in the middle of a tab. Assuming COLUMNS=79, the following prompt has width 1 but countprompt used to return 0. PROMPT="${(pl.10..\t.)}" zsh -df Press ctrl-r or type ls<tab> to observe the effects of the bug. On github: https://github.com/zsh-users/zsh/compare/master...romkatv:countprompt-fix. I've only tested it on one terminal. Before I test it on a dozen of different terminals, is there anything I'm missing? Anything I should be on lookout for? Roman.
Attachment:
countprompt-fix.patch
Description: Binary data