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 with 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.
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.
* Teach ztrftime() %9. and %N for nanoseconds
* Update prompt expansion to pass sub-second times for time formatting
* Update zsh/stat to pass sub-second times for atime/mtime/ctime
Patch heavily based on Oliver's earlier work @ workers/24059
Was showing up in places like ${(e)...} where command substitution
could reallocate the token string, but actually there was never any
guarantee that the lexer wouldn't do that, so this was always
a bit iffy.
Combination of 12 commits from interrupt_abort branch.
Basic strategy is to introduce bits to errflag and to set and
reset them separately.
Remove interrupt status on return to main keymap.
Turn off ERRFLAG_INT for always block.
Restore bit thereafter: we probably need a new variable in order
to allow user interrupts to be reset in the always block.
Add TRY_BLOCK_INTERRUPT
This works the same as TRY_BLOCK_ERROR, but for a SIGINT, too.
Ensure propagation of SIGINT from exited job.
If received by foreground job, shell uses ERRFLAG_INT, not
ERRFLAG_ERROR, to set the new state.
Reset errflag before precmd()
Add always block in _main_completion to fix ZLS_COLORS
Ensures we get the right state of $ZLS_COLORS at the end of _main_complete
even if there's an interrupt. However, the "right state" is a bit messy
as it depends on styles.