summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Perepelitsa <roman.perepelitsa@gmail.com>2020-12-14 10:01:00 +0300
committerRoman Perepelitsa <roman.perepelitsa@gmail.com>2020-12-14 10:01:05 +0300
commit439ce3ed4ee21e2f4dd9c5972ede8223c0780010 (patch)
tree91fc69f91acd802b2c540d9e8ae9230cbe6e6fe8
parent1d99a0bac3721f6d89ac23dfd97f6d30dc04a29e (diff)
dir: add _NON_EXISTENT similarly to _NON_WRITABLE (requires POWERLEVEL9K_DIR_SHOW_WRITABLE=v3)
See #1160.
-rw-r--r--config/p10k-classic.zsh25
-rw-r--r--config/p10k-lean-8colors.zsh25
-rw-r--r--config/p10k-lean.zsh25
-rw-r--r--config/p10k-rainbow.zsh26
-rw-r--r--internal/p10k.zsh16
5 files changed, 79 insertions, 38 deletions
diff --git a/config/p10k-classic.zsh b/config/p10k-classic.zsh
index 707a20c4..d48bc21d 100644
--- a/config/p10k-classic.zsh
+++ b/config/p10k-classic.zsh
@@ -274,12 +274,12 @@
# the full directory that was used in previous commands.
typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
- # Enable special styling for non-writable directories. See POWERLEVEL9K_LOCK_ICON and
- # POWERLEVEL9K_DIR_CLASSES below.
- typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v2
+ # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
+ # and POWERLEVEL9K_DIR_CLASSES below.
+ typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
- # The default icon shown next to non-writable directories when POWERLEVEL9K_DIR_SHOW_WRITABLE is
- # set to v2.
+ # The default icon shown next to non-writable and non-existent directories when
+ # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
# typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
# POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
@@ -292,8 +292,8 @@
#
# Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
#
- # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v2 and the current directory is not writable,
- # its class gets suffix _NOT_WRITABLE.
+ # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
+ # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
#
# For example, given these settings:
#
@@ -302,8 +302,9 @@
# '~(|/*)' HOME ''
# '*' DEFAULT '')
#
- # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with class
- # WORK or WORK_NOT_WRITABLE.
+ # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
+ # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
+ # WORK_NON_EXISTENT.
#
# Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
# option to define custom colors and icons for different directory classes.
@@ -320,6 +321,12 @@
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39
#
+ # # Styling for WORK_NON_EXISTENT.
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39
+ #
# If a styling parameter isn't explicitly defined for some class, it falls back to the classless
# parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
# back to POWERLEVEL9K_DIR_FOREGROUND.
diff --git a/config/p10k-lean-8colors.zsh b/config/p10k-lean-8colors.zsh
index 137c1aa7..34eac1f6 100644
--- a/config/p10k-lean-8colors.zsh
+++ b/config/p10k-lean-8colors.zsh
@@ -272,8 +272,12 @@
# POWERLEVEL9K_DIR_CLASSES below.
typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v2
- # The default icon shown next to non-writable directories when POWERLEVEL9K_DIR_SHOW_WRITABLE is
- # set to v2.
+ # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
+ # and POWERLEVEL9K_DIR_CLASSES below.
+ typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
+
+ # The default icon shown next to non-writable and non-existent directories when
+ # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
# typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
# POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
@@ -286,8 +290,8 @@
#
# Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
#
- # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v2 and the current directory is not writable,
- # its class gets suffix _NOT_WRITABLE.
+ # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
+ # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
#
# For example, given these settings:
#
@@ -296,8 +300,9 @@
# '~(|/*)' HOME ''
# '*' DEFAULT '')
#
- # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with class
- # WORK or WORK_NOT_WRITABLE.
+ # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
+ # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
+ # WORK_NON_EXISTENT.
#
# Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
# option to define custom colors and icons for different directory classes.
@@ -312,7 +317,13 @@
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=4
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=4
- # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=4
+ # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=4#
+ #
+ # Styling for WORK_NON_EXISTENT.
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=4
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=4
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=4
#
# If a styling parameter isn't explicitly defined for some class, it falls back to the classless
# parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
diff --git a/config/p10k-lean.zsh b/config/p10k-lean.zsh
index 60397f98..06643c5e 100644
--- a/config/p10k-lean.zsh
+++ b/config/p10k-lean.zsh
@@ -268,12 +268,12 @@
# the full directory that was used in previous commands.
typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
- # Enable special styling for non-writable directories. See POWERLEVEL9K_LOCK_ICON and
- # POWERLEVEL9K_DIR_CLASSES below.
- typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v2
+ # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
+ # and POWERLEVEL9K_DIR_CLASSES below.
+ typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
- # The default icon shown next to non-writable directories when POWERLEVEL9K_DIR_SHOW_WRITABLE is
- # set to v2.
+ # The default icon shown next to non-writable and non-existent directories when
+ # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
# typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
# POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
@@ -286,8 +286,8 @@
#
# Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
#
- # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v2 and the current directory is not writable,
- # its class gets suffix _NOT_WRITABLE.
+ # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
+ # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
#
# For example, given these settings:
#
@@ -296,8 +296,9 @@
# '~(|/*)' HOME ''
# '*' DEFAULT '')
#
- # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with class
- # WORK or WORK_NOT_WRITABLE.
+ # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
+ # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
+ # WORK_NON_EXISTENT.
#
# Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
# option to define custom colors and icons for different directory classes.
@@ -314,6 +315,12 @@
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39
#
+ # # Styling for WORK_NON_EXISTENT.
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39
+ #
# If a styling parameter isn't explicitly defined for some class, it falls back to the classless
# parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
# back to POWERLEVEL9K_DIR_FOREGROUND.
diff --git a/config/p10k-rainbow.zsh b/config/p10k-rainbow.zsh
index 5ec2e4be..74150d3f 100644
--- a/config/p10k-rainbow.zsh
+++ b/config/p10k-rainbow.zsh
@@ -274,12 +274,12 @@
# the full directory that was used in previous commands.
typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
- # Enable special styling for non-writable directories. See POWERLEVEL9K_LOCK_ICON and
- # POWERLEVEL9K_DIR_CLASSES below.
- typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v2
+ # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
+ # and POWERLEVEL9K_DIR_CLASSES below.
+ typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
- # The default icon shown next to non-writable directories when POWERLEVEL9K_DIR_SHOW_WRITABLE is
- # set to v2.
+ # The default icon shown next to non-writable and non-existent directories when
+ # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
# typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
# POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
@@ -292,8 +292,8 @@
#
# Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
#
- # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v2 and the current directory is not writable,
- # its class gets suffix _NOT_WRITABLE.
+ # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
+ # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
#
# For example, given these settings:
#
@@ -302,8 +302,9 @@
# '~(|/*)' HOME ''
# '*' DEFAULT '')
#
- # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with class
- # WORK or WORK_NOT_WRITABLE.
+ # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
+ # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
+ # WORK_NON_EXISTENT.
#
# Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
# option to define custom colors and icons for different directory classes.
@@ -322,6 +323,13 @@
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=250
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=255
#
+ # # Styling for WORK_NON_EXISTENT.
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_BACKGROUND=4
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=254
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=250
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=255
+ #
# If a styling parameter isn't explicitly defined for some class, it falls back to the classless
# parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
# back to POWERLEVEL9K_DIR_FOREGROUND.
diff --git a/internal/p10k.zsh b/internal/p10k.zsh
index 83091d0f..800168d0 100644
--- a/internal/p10k.zsh
+++ b/internal/p10k.zsh
@@ -1901,8 +1901,12 @@ prompt_dir() {
;;
esac
- [[ $_POWERLEVEL9K_DIR_SHOW_WRITABLE != 0 && ! -w $_p9k__cwd ]]
- local w=$?
+ # w=0: writable
+ # w=1: not writable
+ # w=2: does not exist
+ (( !_POWERLEVEL9K_DIR_SHOW_WRITABLE )) || [[ -w $_p9k__cwd ]]
+ local -i w=$?
+ (( w && _POWERLEVEL9K_DIR_SHOW_WRITABLE > 2 )) && [[ ! -e $_p9k__cwd ]] && w=2
if ! _p9k_cache_ephemeral_get $0 $_p9k__cwd $p $w $fake_first "${parts[@]}"; then
local state=$0
local icon=''
@@ -1914,9 +1918,11 @@ prompt_dir() {
break
fi
done
- if (( ! w )); then
+ if (( w )); then
if (( _POWERLEVEL9K_DIR_SHOW_WRITABLE == 1 )); then
state=${0}_NOT_WRITABLE
+ elif (( w == 2 )); then
+ state+=_NON_EXISTENT
else
state+=_NOT_WRITABLE
fi
@@ -2031,6 +2037,7 @@ prompt_dir() {
(( expand )) && _p9k_prompt_length "${(e):-"\${\${_p9k__d::=0}+}$content"}" || _p9k__ret=
_p9k_cache_ephemeral_set "$state" "$icon" "$expand" "$content" $_p9k__ret
+ typeset -p state >>/tmp/log
fi
if (( _p9k__cache_val[3] )); then
@@ -7068,6 +7075,7 @@ _p9k_init_params() {
case $_POWERLEVEL9K_DIR_SHOW_WRITABLE in
true) _POWERLEVEL9K_DIR_SHOW_WRITABLE=1;;
v2) _POWERLEVEL9K_DIR_SHOW_WRITABLE=2;;
+ v3) _POWERLEVEL9K_DIR_SHOW_WRITABLE=3;;
*) _POWERLEVEL9K_DIR_SHOW_WRITABLE=0;;
esac
typeset -gi _POWERLEVEL9K_DIR_SHOW_WRITABLE
@@ -7937,7 +7945,7 @@ _p9k_must_init() {
[[ $sig == $_p9k__param_sig ]] && return 1
_p9k_deinit
fi
- _p9k__param_pat=$'v112\1'${(q)ZSH_VERSION}$'\1'${(q)ZSH_PATCHLEVEL}$'\1'
+ _p9k__param_pat=$'v113\1'${(q)ZSH_VERSION}$'\1'${(q)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+=$'$GITSTATUS_CACHE_DIR\1$GITSTATUS_AUTO_INSTALL\1${ZLE_RPROMPT_INDENT:-1}\1'