mirror of
https://github.com/romkatv/powerlevel10k.git
synced 2024-12-26 00:41:57 +00:00
add _p9k_prompt_length
This commit is contained in:
parent
bbebf516ab
commit
784dc059cd
1 changed files with 23 additions and 0 deletions
|
@ -45,6 +45,29 @@ function _p9k_g_expand() {
|
|||
typeset -g $1=${(g::)${(P)1}}
|
||||
}
|
||||
|
||||
# If we execute `print -P $1`, how many characters will be printed on the last line?
|
||||
# Assumes that `%{%}` and `%G` don't lie.
|
||||
#
|
||||
# _p9k_prompt_length '' => 0
|
||||
# _p9k_prompt_length 'abc' => 3
|
||||
# _p9k_prompt_length $'abc\nxy' => 2
|
||||
# _p9k_prompt_length $'\t' => 8
|
||||
# _p9k_prompt_length '%F{red}abc' => 3
|
||||
# _p9k_prompt_length $'%{a\b%Gb%}' => 1
|
||||
function _p9k_prompt_length() {
|
||||
emulate -L zsh
|
||||
local -i x y=$#1 m
|
||||
if (( y )); then
|
||||
while (( ${${(%):-$1%$y(l.1.0)}[-1]} )); do (( y *= 2 )); done
|
||||
local xy
|
||||
while (( y > x + 1 )); do
|
||||
m=$(( x + (y - x) / 2 ))
|
||||
typeset ${${(%):-$1%$m(l.x.y)}[-1]}=$m
|
||||
done
|
||||
fi
|
||||
_P9K_RETVAL=$x
|
||||
}
|
||||
|
||||
typeset -g _P9K_BYTE_SUFFIX=('B' 'K' 'M' 'G' 'T' 'P' 'E' 'Z' 'Y')
|
||||
|
||||
# 42 => 42B
|
||||
|
|
Loading…
Reference in a new issue