aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorromkatv <roman.perepelitsa@gmail.com>2020-02-18 18:11:34 +0300
committerromkatv <roman.perepelitsa@gmail.com>2020-02-18 18:11:34 +0300
commita6a2d9a4815534a0ddbd8f76e5e17b33af75d700 (patch)
tree5180cfd0923d25464ad6683d43159b9fd5abb32f
parentd9da275e9e1b4028407488f34db1b9b21f981554 (diff)
stop loading icons.zsh lazily; print boundaries in get_icon_names
-rw-r--r--internal/icons.zsh37
-rw-r--r--internal/p10k.zsh30
-rwxr-xr-xinternal/wizard.zsh1
3 files changed, 25 insertions, 43 deletions
diff --git a/internal/icons.zsh b/internal/icons.zsh
index 21d421b1..f7476e41 100644
--- a/internal/icons.zsh
+++ b/internal/icons.zsh
@@ -636,14 +636,18 @@ function _p9k_init_icons() {
}
# Sadly, this is a part of public API. Its use is emphatically discouraged.
-function _p9k_print_icon() {
+function print_icon() {
+ eval "$__p9k_intro"
+ if (( ! $+_p9k__locale )); then
+ _p9k_init_locale
+ [[ -z $_p9k__locale ]] || local LC_ALL=$_p9k__locale
+ fi
_p9k_init_icons
- local icon_name=$1
- local var_name=POWERLEVEL9K_${icon_name}
- if [[ -n "${(tP)var_name}" ]]; then
- echo -n "${(P)var_name}"
+ local var=POWERLEVEL9K_$1
+ if (( $+parameters[$var] )); then
+ echo -n - ${(P)var}
else
- echo -n "${icons[$icon_name]}"
+ echo -n - $icons[$1]
fi
}
@@ -652,17 +656,22 @@ function _p9k_print_icon() {
# * $1 string - If "original", then the original icons are printed,
# otherwise "print_icon" is used, which takes the users
# overrides into account.
-function _p9k_get_icon_names() {
+function get_icon_names() {
+ eval "$__p9k_intro"
+ if (( ! $+_p9k__locale )); then
+ _p9k_init_locale
+ [[ -z $_p9k__locale ]] || local LC_ALL=$_p9k__locale
+ fi
_p9k_init_icons
- # Iterate over a ordered list of keys of the icons array
+ local key
for key in ${(@kon)icons}; do
- echo -n "POWERLEVEL9K_$key: "
- if [[ "${1}" == "original" ]]; then
- # print the original icons as they are defined in the array above
- echo "${icons[$key]}"
+ echo -n - "POWERLEVEL9K_$key: "
+ print -nP "%K{red} %k"
+ if [[ $1 == original ]]; then
+ echo -n - $icons[$key]
else
- # print the icons as they are configured by the user
- echo "$(print_icon "$key")"
+ print_icon $key
fi
+ print -P "%K{red} %k"
done
}
diff --git a/internal/p10k.zsh b/internal/p10k.zsh
index 6b72dba5..9867982d 100644
--- a/internal/p10k.zsh
+++ b/internal/p10k.zsh
@@ -52,6 +52,7 @@ fi
source "${__p9k_root_dir}/internal/configure.zsh"
source "${__p9k_root_dir}/internal/worker.zsh"
source "${__p9k_root_dir}/internal/parser.zsh"
+source "${__p9k_root_dir}/internal/icons.zsh"
# For compatibility with Powerlevel9k. It's not recommended to use mnemonic color
# names in the configuration except for colors 0-7 as these are standard.
@@ -137,32 +138,6 @@ function getColorCode() {
return 1
}
-# Sadly, this is a part of public API. Its use is emphatically discouraged.
-function print_icon() {
- eval "$__p9k_intro"
- if (( ! $+_p9k__locale )); then
- _p9k_init_locale
- [[ -z $_p9k__locale ]] || local LC_ALL=$_p9k__locale
- fi
- (( $+functions[_p9k_print_icon] )) || source "${__p9k_root_dir}/internal/icons.zsh"
- _p9k_print_icon "$@"
-}
-
-# Prints a list of configured icons.
-#
-# * $1 string - If "original", then the original icons are printed,
-# otherwise "print_icon" is used, which takes the users
-# overrides into account.
-function get_icon_names() {
- eval "$__p9k_intro"
- if (( ! $+_p9k__locale )); then
- _p9k_init_locale
- [[ -z $_p9k__locale ]] || local LC_ALL=$_p9k__locale
- fi
- (( $+functions[_p9k_get_icon_names] )) || source "${__p9k_root_dir}/internal/icons.zsh"
- _p9k_get_icon_names "$@"
-}
-
# _p9k_declare <type> <uppercase-name> [default]...
function _p9k_declare() {
local -i set=$+parameters[$2]
@@ -7055,7 +7030,7 @@ _p9k_must_init() {
[[ $sig == $_p9k__param_sig ]] && return 1
_p9k_deinit
fi
- _p9k__param_pat=$'v50\1'${ZSH_VERSION}$'\1'${ZSH_PATCHLEVEL}$'\1'
+ _p9k__param_pat=$'v51\1'${ZSH_VERSION}$'\1'${ZSH_PATCHLEVEL}$'\1'
_p9k__param_pat+=$'${#parameters[(I)POWERLEVEL9K_*]}\1${(%):-%n%#}\1$GITSTATUS_LOG_LEVEL\1'
_p9k__param_pat+=$'$GITSTATUS_ENABLE_LOGGING\1$GITSTATUS_DAEMON\1$GITSTATUS_NUM_THREADS\1'
_p9k__param_pat+=$'$DEFAULT_USER\1${ZLE_RPROMPT_INDENT:-1}\1$P9K_SSH\1$__p9k_ksh_arrays'
@@ -7075,7 +7050,6 @@ function _p9k_set_os() {
}
function _p9k_init_cacheable() {
- (( $+functions[_p9k_init_icons] )) || source "${__p9k_root_dir}/internal/icons.zsh"
_p9k_init_icons
_p9k_init_params
_p9k_init_prompt
diff --git a/internal/wizard.zsh b/internal/wizard.zsh
index d7e664a6..87256f13 100755
--- a/internal/wizard.zsh
+++ b/internal/wizard.zsh
@@ -1827,7 +1827,6 @@ fi
zmodload zsh/terminfo || return
autoload -Uz is-at-least || return
-source $__p9k_root_dir/internal/icons.zsh || return
if is-at-least 5.7.1 && [[ $COLORTERM == (24bit|truecolor) ]]; then
local -ir has_truecolor=1