mirror of
https://github.com/romkatv/powerlevel10k.git
synced 2024-11-22 04:10:07 +00:00
migrate remaining segments to the new globbing api
This commit is contained in:
parent
3c64f43f2d
commit
4d4c2658b3
1 changed files with 208 additions and 167 deletions
|
@ -2325,13 +2325,6 @@ _p9k_prompt_nodeenv_init() {
|
||||||
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='$NODE_VIRTUAL_ENV'
|
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='$NODE_VIRTUAL_ENV'
|
||||||
}
|
}
|
||||||
|
|
||||||
function _p9k_read_nodenv_version_file() {
|
|
||||||
[[ -r $1 ]] || return
|
|
||||||
local rest
|
|
||||||
read _p9k_ret rest <$1 2>/dev/null
|
|
||||||
[[ -n $_p9k_ret ]]
|
|
||||||
}
|
|
||||||
|
|
||||||
function _p9k_nodeenv_version_transform() {
|
function _p9k_nodeenv_version_transform() {
|
||||||
local dir=${NODENV_ROOT:-$HOME/.nodenv}/versions
|
local dir=${NODENV_ROOT:-$HOME/.nodenv}/versions
|
||||||
[[ -z $1 || $1 == system ]] && _p9k_ret=$1 && return
|
[[ -z $1 || $1 == system ]] && _p9k_ret=$1 && return
|
||||||
|
@ -2343,7 +2336,7 @@ function _p9k_nodeenv_version_transform() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function _p9k_nodenv_global_version() {
|
function _p9k_nodenv_global_version() {
|
||||||
_p9k_read_nodenv_version_file ${NODENV_ROOT:-$HOME/.nodenv}/version || _p9k_ret=system
|
_p9k_read_word ${NODENV_ROOT:-$HOME/.nodenv}/version || _p9k_ret=system
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
|
@ -2355,11 +2348,11 @@ prompt_nodenv() {
|
||||||
if [[ $NODENV_DIR == (|.) ]]; then
|
if [[ $NODENV_DIR == (|.) ]]; then
|
||||||
_p9k_upglob .node-version
|
_p9k_upglob .node-version
|
||||||
local -i idx=$?
|
local -i idx=$?
|
||||||
(( idx )) && _p9k_read_nodenv_version_file $_p9k__parent_dirs[idx]/.node-version || _p9k_ret=
|
(( idx )) && _p9k_read_word $_p9k__parent_dirs[idx]/.node-version || _p9k_ret=
|
||||||
else
|
else
|
||||||
[[ $NODENV_DIR == /* ]] && local dir=$NODENV_DIR || local dir="$_p9k__cwd_a/$NODENV_DIR"
|
[[ $NODENV_DIR == /* ]] && local dir=$NODENV_DIR || local dir="$_p9k__cwd_a/$NODENV_DIR"
|
||||||
while [[ $dir != //[^/]# ]]; do
|
while [[ $dir != //[^/]# ]]; do
|
||||||
_p9k_read_nodenv_version_file $dir/.node-version && break
|
_p9k_read_word $dir/.node-version && break
|
||||||
[[ $dir == / ]] && break
|
[[ $dir == / ]] && break
|
||||||
dir=${dir:h}
|
dir=${dir:h}
|
||||||
done
|
done
|
||||||
|
@ -2502,6 +2495,7 @@ prompt_rbenv() {
|
||||||
_p9k_ret=
|
_p9k_ret=
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
_p9k_ret=
|
||||||
[[ $RBENV_DIR == /* ]] && local dir=$RBENV_DIR || local dir="$_p9k__cwd_a/$RBENV_DIR"
|
[[ $RBENV_DIR == /* ]] && local dir=$RBENV_DIR || local dir="$_p9k__cwd_a/$RBENV_DIR"
|
||||||
while true; do
|
while true; do
|
||||||
if _p9k_read_word $dir/.ruby-version; then
|
if _p9k_read_word $dir/.ruby-version; then
|
||||||
|
@ -2532,15 +2526,8 @@ _p9k_prompt_rbenv_init() {
|
||||||
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='${commands[rbenv]:-${${+functions[rbenv]}:#0}}'
|
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='${commands[rbenv]:-${${+functions[rbenv]}:#0}}'
|
||||||
}
|
}
|
||||||
|
|
||||||
function _p9k_read_luaenv_version_file() {
|
|
||||||
[[ -r $1 ]] || return
|
|
||||||
local rest
|
|
||||||
read _p9k_ret rest <$1 2>/dev/null
|
|
||||||
[[ -n $_p9k_ret ]]
|
|
||||||
}
|
|
||||||
|
|
||||||
function _p9k_luaenv_global_version() {
|
function _p9k_luaenv_global_version() {
|
||||||
_p9k_read_luaenv_version_file ${LUAENV_ROOT:-$HOME/.luaenv}/version || _p9k_ret=system
|
_p9k_read_word ${LUAENV_ROOT:-$HOME/.luaenv}/version || _p9k_ret=system
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
|
@ -2552,22 +2539,32 @@ prompt_luaenv() {
|
||||||
local v=$LUAENV_VERSION
|
local v=$LUAENV_VERSION
|
||||||
else
|
else
|
||||||
(( ${_POWERLEVEL9K_LUAENV_SOURCES[(I)local|global]} )) || return
|
(( ${_POWERLEVEL9K_LUAENV_SOURCES[(I)local|global]} )) || return
|
||||||
[[ $LUAENV_DIR == /* ]] && local dir=$LUAENV_DIR || local dir="$_p9k__cwd_a/$LUAENV_DIR"
|
if [[ $LUAENV_DIR == (|.) ]]; then
|
||||||
while true; do
|
_p9k_upglob .lua-version
|
||||||
if _p9k_read_luaenv_version_file $dir/.lua-version; then
|
local -i idx=$?
|
||||||
|
if (( idx )) && _p9k_read_word $_p9k__parent_dirs[idx]/.lua-version; then
|
||||||
(( ${_POWERLEVEL9K_LUAENV_SOURCES[(I)local]} )) || return
|
(( ${_POWERLEVEL9K_LUAENV_SOURCES[(I)local]} )) || return
|
||||||
local v=$_p9k_ret
|
else
|
||||||
break
|
_p9k_ret=
|
||||||
fi
|
fi
|
||||||
if [[ $dir == / ]]; then
|
else
|
||||||
(( _POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW )) || return
|
_p9k_ret=
|
||||||
(( ${_POWERLEVEL9K_LUAENV_SOURCES[(I)global]} )) || return
|
[[ $LUAENV_DIR == /* ]] && local dir=$LUAENV_DIR || local dir="$_p9k__cwd_a/$LUAENV_DIR"
|
||||||
_p9k_luaenv_global_version
|
while true; do
|
||||||
local v=$_p9k_ret
|
if _p9k_read_word $dir/.lua-version; then
|
||||||
break
|
(( ${_POWERLEVEL9K_LUAENV_SOURCES[(I)local]} )) || return
|
||||||
fi
|
break
|
||||||
dir=${dir:h}
|
fi
|
||||||
done
|
[[ $dir == / ]] && break
|
||||||
|
dir=${dir:h}
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [[ -z $_p9k_ret ]]; then
|
||||||
|
(( _POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW )) || return
|
||||||
|
(( ${_POWERLEVEL9K_LUAENV_SOURCES[(I)global]} )) || return
|
||||||
|
_p9k_luaenv_global_version
|
||||||
|
fi
|
||||||
|
local v=$_p9k_ret
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if (( !_POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW )); then
|
if (( !_POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW )); then
|
||||||
|
@ -2582,65 +2579,8 @@ _p9k_prompt_luaenv_init() {
|
||||||
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='${commands[luaenv]:-${${+functions[luaenv]}:#0}}'
|
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='${commands[luaenv]:-${${+functions[luaenv]}:#0}}'
|
||||||
}
|
}
|
||||||
|
|
||||||
function _p9k_read_jenv_version_file() {
|
|
||||||
[[ -r $1 ]] || return
|
|
||||||
local rest
|
|
||||||
read _p9k_ret rest <$1 2>/dev/null
|
|
||||||
[[ -n $_p9k_ret ]]
|
|
||||||
}
|
|
||||||
|
|
||||||
function _p9k_jenv_global_version() {
|
function _p9k_jenv_global_version() {
|
||||||
_p9k_read_jenv_version_file ${JENV_ROOT:-$HOME/.jenv}/version || _p9k_ret=system
|
_p9k_read_word ${JENV_ROOT:-$HOME/.jenv}/version || _p9k_ret=system
|
||||||
}
|
|
||||||
|
|
||||||
function _p9k_read_plenv_version_file() {
|
|
||||||
[[ -r $1 ]] || return
|
|
||||||
local rest
|
|
||||||
read _p9k_ret rest <$1 2>/dev/null
|
|
||||||
[[ -n $_p9k_ret ]]
|
|
||||||
}
|
|
||||||
|
|
||||||
function _p9k_plenv_global_version() {
|
|
||||||
_p9k_read_plenv_version_file ${PLENV_ROOT:-$HOME/.plenv}/version || _p9k_ret=system
|
|
||||||
}
|
|
||||||
|
|
||||||
################################################################
|
|
||||||
# Segment to display plenv information
|
|
||||||
# https://github.com/plenv/plenv#choosing-the-perl-version
|
|
||||||
prompt_plenv() {
|
|
||||||
if [[ -n $PLENV_VERSION ]]; then
|
|
||||||
(( ${_POWERLEVEL9K_PLENV_SOURCES[(I)shell]} )) || return
|
|
||||||
local v=$PLENV_VERSION
|
|
||||||
else
|
|
||||||
(( ${_POWERLEVEL9K_PLENV_SOURCES[(I)local|global]} )) || return
|
|
||||||
[[ $PLENV_DIR == /* ]] && local dir=$PLENV_DIR || local dir="$_p9k__cwd_a/$PLENV_DIR"
|
|
||||||
while true; do
|
|
||||||
if _p9k_read_plenv_version_file $dir/.perl-version; then
|
|
||||||
(( ${_POWERLEVEL9K_PLENV_SOURCES[(I)local]} )) || return
|
|
||||||
local v=$_p9k_ret
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
if [[ $dir == / ]]; then
|
|
||||||
(( _POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW )) || return
|
|
||||||
(( ${_POWERLEVEL9K_PLENV_SOURCES[(I)global]} )) || return
|
|
||||||
_p9k_plenv_global_version
|
|
||||||
local v=$_p9k_ret
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
dir=${dir:h}
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if (( !_POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW )); then
|
|
||||||
_p9k_plenv_global_version
|
|
||||||
[[ $v == $_p9k_ret ]] && return
|
|
||||||
fi
|
|
||||||
|
|
||||||
_p9k_prompt_segment "$0" "blue" "$_p9k_color1" 'PERL_ICON' 0 '' "${v//\%/%%}"
|
|
||||||
}
|
|
||||||
|
|
||||||
_p9k_prompt_plenv_init() {
|
|
||||||
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='${commands[plenv]:-${${+functions[plenv]}:#0}}'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
|
@ -2652,22 +2592,32 @@ prompt_jenv() {
|
||||||
local v=$JENV_VERSION
|
local v=$JENV_VERSION
|
||||||
else
|
else
|
||||||
(( ${_POWERLEVEL9K_JENV_SOURCES[(I)local|global]} )) || return
|
(( ${_POWERLEVEL9K_JENV_SOURCES[(I)local|global]} )) || return
|
||||||
[[ $JENV_DIR == /* ]] && local dir=$JENV_DIR || local dir="$_p9k__cwd_a/$JENV_DIR"
|
if [[ $JENV_DIR == (|.) ]]; then
|
||||||
while true; do
|
_p9k_upglob .java-version
|
||||||
if _p9k_read_jenv_version_file $dir/.java-version; then
|
local -i idx=$?
|
||||||
|
if (( idx )) && _p9k_read_word $_p9k__parent_dirs[idx]/.java-version; then
|
||||||
(( ${_POWERLEVEL9K_JENV_SOURCES[(I)local]} )) || return
|
(( ${_POWERLEVEL9K_JENV_SOURCES[(I)local]} )) || return
|
||||||
local v=$_p9k_ret
|
else
|
||||||
break
|
_p9k_ret=
|
||||||
fi
|
fi
|
||||||
if [[ $dir == / ]]; then
|
else
|
||||||
(( _POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW )) || return
|
_p9k_ret=
|
||||||
(( ${_POWERLEVEL9K_JENV_SOURCES[(I)global]} )) || return
|
[[ $JENV_DIR == /* ]] && local dir=$JENV_DIR || local dir="$_p9k__cwd_a/$JENV_DIR"
|
||||||
_p9k_jenv_global_version
|
while true; do
|
||||||
local v=$_p9k_ret
|
if _p9k_read_word $dir/.java-version; then
|
||||||
break
|
(( ${_POWERLEVEL9K_JENV_SOURCES[(I)local]} )) || return
|
||||||
fi
|
break
|
||||||
dir=${dir:h}
|
fi
|
||||||
done
|
[[ $dir == / ]] && break
|
||||||
|
dir=${dir:h}
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [[ -z $_p9k_ret ]]; then
|
||||||
|
(( _POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW )) || return
|
||||||
|
(( ${_POWERLEVEL9K_JENV_SOURCES[(I)global]} )) || return
|
||||||
|
_p9k_jenv_global_version
|
||||||
|
fi
|
||||||
|
local v=$_p9k_ret
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if (( !_POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW )); then
|
if (( !_POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW )); then
|
||||||
|
@ -2682,6 +2632,59 @@ _p9k_prompt_jenv_init() {
|
||||||
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='${commands[jenv]:-${${+functions[jenv]}:#0}}'
|
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='${commands[jenv]:-${${+functions[jenv]}:#0}}'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _p9k_plenv_global_version() {
|
||||||
|
_p9k_read_word ${PLENV_ROOT:-$HOME/.plenv}/version || _p9k_ret=system
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
# Segment to display plenv information
|
||||||
|
# https://github.com/plenv/plenv#choosing-the-perl-version
|
||||||
|
prompt_plenv() {
|
||||||
|
if [[ -n $PLENV_VERSION ]]; then
|
||||||
|
(( ${_POWERLEVEL9K_PLENV_SOURCES[(I)shell]} )) || return
|
||||||
|
local v=$PLENV_VERSION
|
||||||
|
else
|
||||||
|
(( ${_POWERLEVEL9K_PLENV_SOURCES[(I)local|global]} )) || return
|
||||||
|
if [[ $PLENV_DIR == (|.) ]]; then
|
||||||
|
_p9k_upglob .perl-version
|
||||||
|
local -i idx=$?
|
||||||
|
if (( idx )) && _p9k_read_word $_p9k__parent_dirs[idx]/.perl-version; then
|
||||||
|
(( ${_POWERLEVEL9K_PLENV_SOURCES[(I)local]} )) || return
|
||||||
|
else
|
||||||
|
_p9k_ret=
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
_p9k_ret=
|
||||||
|
[[ $PLENV_DIR == /* ]] && local dir=$PLENV_DIR || local dir="$_p9k__cwd_a/$PLENV_DIR"
|
||||||
|
while true; do
|
||||||
|
if _p9k_read_word $dir/.perl-version; then
|
||||||
|
(( ${_POWERLEVEL9K_PLENV_SOURCES[(I)local]} )) || return
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
[[ $dir == / ]] && break
|
||||||
|
dir=${dir:h}
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [[ -z $_p9k_ret ]]; then
|
||||||
|
(( _POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW )) || return
|
||||||
|
(( ${_POWERLEVEL9K_PLENV_SOURCES[(I)global]} )) || return
|
||||||
|
_p9k_plenv_global_version
|
||||||
|
fi
|
||||||
|
local v=$_p9k_ret
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( !_POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW )); then
|
||||||
|
_p9k_plenv_global_version
|
||||||
|
[[ $v == $_p9k_ret ]] && return
|
||||||
|
fi
|
||||||
|
|
||||||
|
_p9k_prompt_segment "$0" "blue" "$_p9k_color1" 'PERL_ICON' 0 '' "${v//\%/%%}"
|
||||||
|
}
|
||||||
|
|
||||||
|
_p9k_prompt_plenv_init() {
|
||||||
|
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='${commands[plenv]:-${${+functions[plenv]}:#0}}'
|
||||||
|
}
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
# Segment to display chruby information
|
# Segment to display chruby information
|
||||||
# see https://github.com/postmodern/chruby/issues/245 for chruby_auto issue with ZSH
|
# see https://github.com/postmodern/chruby/issues/245 for chruby_auto issue with ZSH
|
||||||
|
@ -2711,12 +2714,7 @@ instant_prompt_root_indicator() { prompt_root_indicator; }
|
||||||
prompt_rust_version() {
|
prompt_rust_version() {
|
||||||
unset P9K_RUST_VERSION
|
unset P9K_RUST_VERSION
|
||||||
if (( _POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY )); then
|
if (( _POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY )); then
|
||||||
local dir=$_p9k__cwd_a
|
_p9k_upglob Cargo.toml && return
|
||||||
while true; do
|
|
||||||
[[ $dir == / ]] && return
|
|
||||||
[[ -e $dir/Cargo.toml ]] && break
|
|
||||||
dir=${dir:h}
|
|
||||||
done
|
|
||||||
fi
|
fi
|
||||||
local rustc=$commands[rustc] toolchain deps=()
|
local rustc=$commands[rustc] toolchain deps=()
|
||||||
if (( $+commands[ldd] )); then
|
if (( $+commands[ldd] )); then
|
||||||
|
@ -2739,23 +2737,30 @@ prompt_rust_version() {
|
||||||
if [[ -z ${toolchain::=$RUSTUP_TOOLCHAIN} ]]; then
|
if [[ -z ${toolchain::=$RUSTUP_TOOLCHAIN} ]]; then
|
||||||
if ! _p9k_cache_stat_get $0_overrides $rustup $cfg; then
|
if ! _p9k_cache_stat_get $0_overrides $rustup $cfg; then
|
||||||
local lines=(${(f)"$(rustup override list 2>/dev/null)"})
|
local lines=(${(f)"$(rustup override list 2>/dev/null)"})
|
||||||
local keys=(/ ${lines%%[[:space:]]#[^[:space:]]#})
|
if [[ $lines[1] == "no overrides" ]]; then
|
||||||
local vals=(_ ${lines##*[[:space:]]})
|
_p9k_cache_stat_set
|
||||||
_p9k_cache_stat_set ${keys:^vals}
|
else
|
||||||
|
local MATCH
|
||||||
|
local keys=(${^${lines%%[[:space:]]#[^[:space:]]#}}'/*')
|
||||||
|
local vals=(${(@)lines/(#m)*/$MATCH[(I)/] ${MATCH##*[[:space:]]}})
|
||||||
|
_p9k_cache_stat_set ${keys:^vals}
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
local -A overrides=($_p9k_cache_val)
|
local -A overrides=($_p9k_cache_val)
|
||||||
local dir=$_p9k__cwd_a
|
_p9k_upglob rust-toolchain
|
||||||
while true; do
|
local dir=$_p9k__parent_dirs[$?]
|
||||||
if (( $+overrides[$dir] )); then
|
local -i n m=${dir[(I)/]}
|
||||||
toolchain=$overrides[$dir]
|
local pair
|
||||||
break
|
for pair in ${overrides[(K)$_p9k__cwd/]}; do
|
||||||
fi
|
n=${pair%% *}
|
||||||
if [[ -r $dir/rust-toolchain ]]; then
|
(( n <= m )) && continue
|
||||||
{ toolchain="$(<$dir/rust-toolchain)" } 2>/dev/null
|
m=n
|
||||||
break
|
toolchain=${pair#* }
|
||||||
fi
|
|
||||||
dir=${dir:h}
|
|
||||||
done
|
done
|
||||||
|
if [[ -z $toolchain && -n $dir ]]; then
|
||||||
|
_p9k_read_word $dir/rust-toolchain
|
||||||
|
toolchain=$_p9k_ret
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if ! _p9k_cache_stat_get $0_v$toolchain $rustc $deps; then
|
if ! _p9k_cache_stat_get $0_v$toolchain $rustc $deps; then
|
||||||
|
@ -3777,15 +3782,30 @@ _p9k_prompt_virtualenv_init() {
|
||||||
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='$VIRTUAL_ENV'
|
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='$VIRTUAL_ENV'
|
||||||
}
|
}
|
||||||
|
|
||||||
function _p9k_read_pyenv_version_file() {
|
# _p9k_read_pyenv_like_version_file <filepath> [prefix]
|
||||||
[[ -r $1 ]] || return
|
function _p9k_read_pyenv_like_version_file() {
|
||||||
local content
|
local -a stat
|
||||||
IFS='' read -rd $'\0' content <$1 2>/dev/null
|
zstat -A stat +mtime -- $1 2>/dev/null || stat=(-1)
|
||||||
_p9k_ret=${${(j.:.)${(@)${=content}#python-}:-system}}
|
local cached=$_p9k__read_pyenv_like_version_file_cache[$1:$2]
|
||||||
|
if [[ $cached == $stat[1]:* ]]; then
|
||||||
|
_p9k_ret=${cached#*:}
|
||||||
|
else
|
||||||
|
local fd content
|
||||||
|
{
|
||||||
|
{ sysopen -r -u fd $1 && sysread -i $fd -s 1024 content } 2>/dev/null
|
||||||
|
} always {
|
||||||
|
[[ -n $fd ]] && exec {fd}>&-
|
||||||
|
}
|
||||||
|
local MATCH
|
||||||
|
local versions=(${(@)${(f)content}/(#m)*/${MATCH[(w)1]#$2}})
|
||||||
|
_p9k_ret=${(j.:.)versions}
|
||||||
|
_p9k__read_pyenv_like_version_file_cache[$1:$2]=$stat[1]:$_p9k_ret
|
||||||
|
fi
|
||||||
|
[[ -n $_p9k_ret ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
function _p9k_pyenv_global_version() {
|
function _p9k_pyenv_global_version() {
|
||||||
_p9k_read_pyenv_version_file ${PYENV_ROOT:-$HOME/.pyenv}/version || _p9k_ret=system
|
_p9k_read_pyenv_like_version_file ${PYENV_ROOT:-$HOME/.pyenv}/version python- || _p9k_ret=system
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
|
@ -3797,22 +3817,32 @@ prompt_pyenv() {
|
||||||
(( ${_POWERLEVEL9K_PYENV_SOURCES[(I)shell]} )) || return
|
(( ${_POWERLEVEL9K_PYENV_SOURCES[(I)shell]} )) || return
|
||||||
else
|
else
|
||||||
(( ${_POWERLEVEL9K_PYENV_SOURCES[(I)local|global]} )) || return
|
(( ${_POWERLEVEL9K_PYENV_SOURCES[(I)local|global]} )) || return
|
||||||
[[ $PYENV_DIR == /* ]] && local dir=$PYENV_DIR || local dir="$_p9k__cwd_a/$PYENV_DIR"
|
if [[ $PYENV_DIR == (|.) ]]; then
|
||||||
while true; do
|
_p9k_upglob .python-version
|
||||||
if _p9k_read_pyenv_version_file $dir/.python-version; then
|
local -i idx=$?
|
||||||
|
if (( idx )) && _p9k_read_pyenv_like_version_file $_p9k__parent_dirs[idx]/.python-version python-; then
|
||||||
(( ${_POWERLEVEL9K_PYENV_SOURCES[(I)local]} )) || return
|
(( ${_POWERLEVEL9K_PYENV_SOURCES[(I)local]} )) || return
|
||||||
v=$_p9k_ret
|
else
|
||||||
break
|
_p9k_ret=
|
||||||
fi
|
fi
|
||||||
if [[ $dir == / ]]; then
|
else
|
||||||
(( _POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW )) || return
|
_p9k_ret=
|
||||||
(( ${_POWERLEVEL9K_PYENV_SOURCES[(I)global]} )) || return
|
[[ $PYENV_DIR == /* ]] && local dir=$PYENV_DIR || local dir="$_p9k__cwd_a/$PYENV_DIR"
|
||||||
_p9k_pyenv_global_version
|
while true; do
|
||||||
v=$_p9k_ret
|
if _p9k_read_pyenv_like_version_file $dir/.python-version python-; then
|
||||||
break
|
(( ${_POWERLEVEL9K_PYENV_SOURCES[(I)local]} )) || return
|
||||||
fi
|
break
|
||||||
dir=${dir:h}
|
fi
|
||||||
done
|
[[ $dir == / ]] && break
|
||||||
|
dir=${dir:h}
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [[ -z $_p9k_ret ]]; then
|
||||||
|
(( _POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW )) || return
|
||||||
|
(( ${_POWERLEVEL9K_PYENV_SOURCES[(I)global]} )) || return
|
||||||
|
_p9k_pyenv_global_version
|
||||||
|
fi
|
||||||
|
v=$_p9k_ret
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if (( !_POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW )); then
|
if (( !_POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW )); then
|
||||||
|
@ -3827,36 +3857,44 @@ _p9k_prompt_pyenv_init() {
|
||||||
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='${commands[pyenv]:-${${+functions[pyenv]}:#0}}'
|
typeset -g "_p9k__segment_cond_${_p9k_prompt_side}[_p9k_segment_index]"='${commands[pyenv]:-${${+functions[pyenv]}:#0}}'
|
||||||
}
|
}
|
||||||
|
|
||||||
function _p9k_read_goenv_version_file() {
|
|
||||||
[[ -r $1 ]] || return
|
|
||||||
local content
|
|
||||||
IFS='' read -rd $'\0' content <$1 2>/dev/null
|
|
||||||
_p9k_ret=${${(j.:.)${=content}:-system}}
|
|
||||||
}
|
|
||||||
|
|
||||||
function _p9k_goenv_global_version() {
|
function _p9k_goenv_global_version() {
|
||||||
_p9k_read_goenv_version_file ${GOENV_ROOT:-$HOME/.goenv}/version || _p9k_ret=system
|
_p9k_read_pyenv_like_version_file ${GOENV_ROOT:-$HOME/.goenv}/version go- || _p9k_ret=system
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
# Segment to display goenv information: https://github.com/syndbg/goenv
|
# Segment to display goenv information: https://github.com/syndbg/goenv
|
||||||
prompt_goenv() {
|
prompt_goenv() {
|
||||||
local v=${(j.:.)${(s.:.)GOENV_VERSION}}
|
local v=${(j.:.)${(@)${(s.:.)GOENV_VERSION}#go-}}
|
||||||
if [[ -z $v ]]; then
|
if [[ -n $v ]]; then
|
||||||
[[ $GOENV_DIR == /* ]] && local dir=$GOENV_DIR || local dir="$_p9k__cwd_a/$GOENV_DIR"
|
(( ${_POWERLEVEL9K_GOENV_SOURCES[(I)shell]} )) || return
|
||||||
while true; do
|
else
|
||||||
if _p9k_read_goenv_version_file $dir/.go-version; then
|
(( ${_POWERLEVEL9K_GOENV_SOURCES[(I)local|global]} )) || return
|
||||||
v=$_p9k_ret
|
if [[ $GOENV_DIR == (|.) ]]; then
|
||||||
break
|
_p9k_upglob .go-version
|
||||||
|
local -i idx=$?
|
||||||
|
if (( idx )) && _p9k_read_goenv_like_version_file $_p9k__parent_dirs[idx]/.go-version go-; then
|
||||||
|
(( ${_POWERLEVEL9K_GOENV_SOURCES[(I)local]} )) || return
|
||||||
|
else
|
||||||
|
_p9k_ret=
|
||||||
fi
|
fi
|
||||||
if [[ $dir == / ]]; then
|
else
|
||||||
(( _POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW )) || return
|
_p9k_ret=
|
||||||
_p9k_goenv_global_version
|
[[ $GOENV_DIR == /* ]] && local dir=$GOENV_DIR || local dir="$_p9k__cwd_a/$GOENV_DIR"
|
||||||
v=$_p9k_ret
|
while true; do
|
||||||
break
|
if _p9k_read_goenv_like_version_file $dir/.go-version go-; then
|
||||||
fi
|
(( ${_POWERLEVEL9K_GOENV_SOURCES[(I)local]} )) || return
|
||||||
dir=${dir:h}
|
break
|
||||||
done
|
fi
|
||||||
|
[[ $dir == / ]] && break
|
||||||
|
dir=${dir:h}
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [[ -z $_p9k_ret ]]; then
|
||||||
|
(( _POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW )) || return
|
||||||
|
(( ${_POWERLEVEL9K_GOENV_SOURCES[(I)global]} )) || return
|
||||||
|
_p9k_goenv_global_version
|
||||||
|
fi
|
||||||
|
v=$_p9k_ret
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if (( !_POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW )); then
|
if (( !_POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW )); then
|
||||||
|
@ -5411,6 +5449,8 @@ typeset -g _p9k__param_sig
|
||||||
_p9k_init_vars() {
|
_p9k_init_vars() {
|
||||||
# filepath => mtime ':' word
|
# filepath => mtime ':' word
|
||||||
typeset -gA _p9k__read_word_cache
|
typeset -gA _p9k__read_word_cache
|
||||||
|
# filepath:prefix => mtime ':' versions
|
||||||
|
typeset -gA _p9k__read_pyenv_like_version_file_cache
|
||||||
|
|
||||||
# _p9k__parent_dirs and _p9k__parent_mtimes are parallel arrays. They are updated
|
# _p9k__parent_dirs and _p9k__parent_mtimes are parallel arrays. They are updated
|
||||||
# together with _p9k__cwd. _p9k__parent_mtimes[i] is mtime for _p9k__parent_dirs[i].
|
# together with _p9k__cwd. _p9k__parent_mtimes[i] is mtime for _p9k__parent_dirs[i].
|
||||||
|
@ -5809,6 +5849,7 @@ _p9k_init_params() {
|
||||||
_p9k_declare -b POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW 0
|
_p9k_declare -b POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW 0
|
||||||
_p9k_declare -a POWERLEVEL9K_PYENV_SOURCES -- shell local global
|
_p9k_declare -a POWERLEVEL9K_PYENV_SOURCES -- shell local global
|
||||||
_p9k_declare -b POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW 0
|
_p9k_declare -b POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW 0
|
||||||
|
_p9k_declare -a POWERLEVEL9K_GOENV_SOURCES -- shell local global
|
||||||
_p9k_declare -b POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION 1
|
_p9k_declare -b POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION 1
|
||||||
_p9k_declare -e POWERLEVEL9K_NODEENV_LEFT_DELIMITER "["
|
_p9k_declare -e POWERLEVEL9K_NODEENV_LEFT_DELIMITER "["
|
||||||
_p9k_declare -e POWERLEVEL9K_NODEENV_RIGHT_DELIMITER "]"
|
_p9k_declare -e POWERLEVEL9K_NODEENV_RIGHT_DELIMITER "]"
|
||||||
|
|
Loading…
Reference in a new issue