aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorromkatv <roman.perepelitsa@gmail.com>2019-08-20 15:56:43 +0300
committerromkatv <roman.perepelitsa@gmail.com>2019-08-20 15:56:43 +0300
commite537a0ee628341741f20a7d2d96ea1c4fac74c4a (patch)
tree722bb8233e62285114ca22f0b684595061229777
parenta5e9af847d7052d920a340e12b823e600ae10a9e (diff)
better utf-8 handling
-rw-r--r--config/p10k-classic.zsh3
-rw-r--r--config/p10k-lean.zsh3
-rwxr-xr-xinternal/icons.zsh12
-rwxr-xr-xinternal/p10k.zsh16
-rwxr-xr-xinternal/wizard.zsh3
5 files changed, 21 insertions, 16 deletions
diff --git a/config/p10k-classic.zsh b/config/p10k-classic.zsh
index 5eb4f7de..6be7c45c 100644
--- a/config/p10k-classic.zsh
+++ b/config/p10k-classic.zsh
@@ -16,7 +16,8 @@ fi
() {
emulate -L zsh
setopt no_unset
- if [[ ${LC_ALL:-${LANG:-}} != *.(utf|UTF)(-|)8 ]]; then
+ zmodload zsh/langinfo
+ if [[ ${langinfo[CODESET]:-} != (utf|UTF)(-|)8 ]]; then
local LC_ALL=${${(@M)$(locale -a):#*.(utf|UTF)(-|)8}[1]:-en_US.UTF-8}
fi
diff --git a/config/p10k-lean.zsh b/config/p10k-lean.zsh
index 8704c59b..696d6a4e 100644
--- a/config/p10k-lean.zsh
+++ b/config/p10k-lean.zsh
@@ -16,7 +16,8 @@ fi
() {
emulate -L zsh
setopt no_unset
- if [[ ${LC_ALL:-${LANG:-}} != *.(utf|UTF)(-|)8 ]]; then
+ zmodload zsh/langinfo
+ if [[ ${langinfo[CODESET]:-} != (utf|UTF)(-|)8 ]]; then
local LC_ALL=${${(@M)$(locale -a):#*.(utf|UTF)(-|)8}[1]:-en_US.UTF-8}
fi
diff --git a/internal/icons.zsh b/internal/icons.zsh
index e93712c4..fd2ab1be 100755
--- a/internal/icons.zsh
+++ b/internal/icons.zsh
@@ -3,9 +3,11 @@ typeset -gA icons
function _p9k_init_icons() {
[[ $+_p9k_icon_mode == 1 && $_p9k_icon_mode == $POWERLEVEL9K_MODE ]] && return
typeset -g _p9k_icon_mode=$POWERLEVEL9K_MODE
- typeset -g _p9k_locale=${LC_ALL:-$LANG}
- if [[ $_p9k_locale != *.(utf|UTF)(-|)8 ]]; then
- _p9k_locale=${${(@M)$(locale -a):#*.(utf|UTF)(-|)8}[1]:-en_US.UTF-8}
+ zmodload zsh/langinfo
+ if [[ ${langinfo[CODESET]:-} != (utf|UTF)(-|)8 ]]; then
+ typeset -g _p9k_locale=${${(@M)$(locale -a):#*.(utf|UTF)(-|)8}[1]:-en_US.UTF-8}
+ else
+ typeset -g _p9k_locale=
fi
case $POWERLEVEL9K_MODE in
@@ -535,7 +537,7 @@ function _p9k_init_icons() {
function print_icon() {
emulate -L zsh && setopt no_hist_expand extended_glob no_prompt_bang prompt_{cr,percent,subst,sp}
_p9k_init_icons
- local LC_ALL=$_p9k_locale
+ [[ -z $_p9k_locale ]] || local LC_ALL=$_p9k_locale
local icon_name=$1
local var_name=POWERLEVEL9K_${icon_name}
if [[ -n "${(tP)var_name}" ]]; then
@@ -553,7 +555,7 @@ function print_icon() {
function get_icon_names() {
emulate -L zsh && setopt no_hist_expand extended_glob no_prompt_bang prompt_{cr,percent,subst,sp}
_p9k_init_icons
- local LC_ALL=$_p9k_locale
+ [[ -z $_p9k_locale ]] || local LC_ALL=$_p9k_locale
# Iterate over a ordered list of keys of the icons array
for key in ${(@kon)icons}; do
echo -n "POWERLEVEL9K_$key: "
diff --git a/internal/p10k.zsh b/internal/p10k.zsh
index 30499b66..255919a4 100755
--- a/internal/p10k.zsh
+++ b/internal/p10k.zsh
@@ -147,7 +147,7 @@ function _p9k_declare() {
(( set )) && typeset -g _$2=${(P)2} || typeset -g _$2=$3
;;
-e)
- local LC_ALL=$_p9k_locale
+ [[ -z $_p9k_locale ]] || local LC_ALL=$_p9k_locale
if (( set )); then
local v=${(P)2}
typeset -g _$2=${(g::)v}
@@ -330,7 +330,7 @@ _p9k_get_icon() {
if [[ $_p9k_ret == $'\1'* ]]; then
_p9k_ret=${_p9k_ret[2,-1]}
else
- local LC_ALL=$_p9k_locale
+ [[ -z $_p9k_locale ]] || local LC_ALL=$_p9k_locale
_p9k_ret=${(g::)_p9k_ret}
[[ $_p9k_ret != $'\b'? ]] || _p9k_ret="%{$_p9k_ret%}" # penance for past sins
fi
@@ -551,7 +551,7 @@ _p9k_left_prompt_segment() {
p+='${${_p9k_e:#00}:+${${_p9k_t[$_p9k_n]/'$ss'/$_p9k_ss}/'$s'/$_p9k_s}'
- local LC_ALL=$_p9k_locale
+ [[ -z $_p9k_locale ]] || local LC_ALL=$_p9k_locale
_p9k_param $1 ICON_BEFORE_CONTENT ''
if [[ $_p9k_ret != false ]]; then
_p9k_param $1 PREFIX ''
@@ -752,7 +752,7 @@ _p9k_right_prompt_segment() {
p+='${${_p9k_e:#00}:+${_p9k_t[$_p9k_n]/'$w'/$_p9k_w}'
- local LC_ALL=$_p9k_locale
+ [[ -z $_p9k_locale ]] || local LC_ALL=$_p9k_locale
_p9k_param $1 ICON_BEFORE_CONTENT ''
if [[ $_p9k_ret != true ]]; then
_p9k_param $1 PREFIX ''
@@ -1091,7 +1091,7 @@ prompt_context() {
if [[ -z $content ]]; then
local var=POWERLEVEL9K_CONTEXT_${state}_TEMPLATE
if (( $+parameters[$var] )); then
- local LC_ALL=$_p9k_locale
+ [[ -z $_p9k_locale ]] || local LC_ALL=$_p9k_locale
content=${(P)var}
content=${(g::)content}
else
@@ -3570,7 +3570,7 @@ _p9k_init_params() {
if [[ $parameters[POWERLEVEL9K_BATTERY_STAGES] == scalar ]]; then
_p9k_declare -e POWERLEVEL9K_BATTERY_STAGES
else
- local LC_ALL=$_p9k_locale
+ [[ -z $_p9k_locale ]] || local LC_ALL=$_p9k_locale
_p9k_declare -a POWERLEVEL9K_BATTERY_STAGES --
_POWERLEVEL9K_BATTERY_STAGES=("${(@g::)_POWERLEVEL9K_BATTERY_STAGES}")
fi
@@ -3833,7 +3833,7 @@ _p9k_build_gap_post() {
}
_p9k_init_lines() {
- local LC_ALL=$_p9k_locale
+ [[ -z $_p9k_locale ]] || local LC_ALL=$_p9k_locale
local -a left_segments=($_POWERLEVEL9K_LEFT_PROMPT_ELEMENTS)
local -a right_segments=($_POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS)
@@ -4250,7 +4250,7 @@ _p9k_init() {
if _p9k_segment_in_use dir; then
if (( $+_POWERLEVEL9K_DIR_CLASSES )); then
- local LC_ALL=$_p9k_locale
+ [[ -z $_p9k_locale ]] || local LC_ALL=$_p9k_locale
local -i i=3
for ((; i <= $#_POWERLEVEL9K_DIR_CLASSES; i+=3)); do
_POWERLEVEL9K_DIR_CLASSES[i]=${(g::)_POWERLEVEL9K_DIR_CLASSES[i]}
diff --git a/internal/wizard.zsh b/internal/wizard.zsh
index b6bbd445..9941f7ed 100755
--- a/internal/wizard.zsh
+++ b/internal/wizard.zsh
@@ -5,7 +5,8 @@ setopt noaliases
() {
setopt extended_glob no_prompt_{bang,subst} prompt_{cr,percent,sp}
-if [[ ${LC_ALL:-$LANG} != *.(utf|UTF)(-|)8 ]]; then
+zmodload zsh/langinfo
+if [[ ${langinfo[CODESET]:-} != (utf|UTF)(-|)8 ]]; then
local LC_ALL=${${(@M)$(locale -a):#*.(utf|UTF)(-|)8}[1]:-en_US.UTF-8}
fi