Add a function to neatly display the path variable.
authorJoerg Jaspert <joerg@ganneff.de>
Thu, 28 Mar 2013 11:40:03 +0000 (12:40 +0100)
committerJoerg Jaspert <joerg@ganneff.de>
Thu, 28 Mar 2013 11:40:03 +0000 (12:40 +0100)
actually, it allows to display any array value, if one just sets
the ganneff:config pcolor style correctly.

.zsh/functions/path
.zsh/zshenv.local.sample

index 6d36fa4..b5067a8 100644 (file)
@@ -1,14 +1,30 @@
 # -*- mode:sh -*-
 
-# From http://zanshin.net/2013/02/02/zsh-configuration-from-the-ground-up/
+# idea from
+# http://zanshin.net/2013/02/02/zsh-configuration-from-the-ground-up/
 # -------------------------------------------------------------------
 # display a neatly formatted path
 # -------------------------------------------------------------------
 
-echo $PATH | tr ":" "\n" | \
-    awk "{ sub(\"/usr\", \"$fg_no_bold[green]/usr$reset_color\"); \
-sub(\"/bin\", \"$fg_no_bold[blue]/bin$reset_color\"); \
-sub(\"/opt\", \"$fg_no_bold[cyan]/opt$reset_color\"); \
-sub(\"/sbin\", \"$fg_no_bold[magenta]/sbin$reset_color\"); \
-sub(\"/local\", \"$fg_no_bold[yellow]/local$reset_color\"); \
-print }"
+emulate -L zsh
+local pcolor ppath arg
+
+arg=${1:-"path"}
+
+typeset -A pcolor
+zstyle -a ':ganneff:config' pcolor pcolor || \
+    pcolor=(
+    /usr   green
+    /bin   blue
+    /opt   cyan
+    /sbin  magenta
+    /local yellow
+    /zsh   white
+)
+
+ppath=${(P)arg}
+for key value in ${(kv)pcolor}; do
+    ppath=${(%)${(@)ppath//${key}/${(P)${(U)value}}${key}${reset_color}}}
+done
+
+print -l ${=ppath}
index f4c227b..4dbd74d 100644 (file)
@@ -125,6 +125,19 @@ zstyle ':ganneff:config' dirstackhandling dirpersist
 ## Defaults to lesspipe
 # zstyle ':ganneff:config' lesstool lesspipe
 
+# We have a little function "path". Call that and it displays your path
+# variable nicely colored. Call it with argument (say, fpath) and it does
+# it for that path. Define the colors and elements to style in this array
+# (or live with defaults).
+# Actually it can be used for any array, just set the pcolor style with the
+# right matches and the color for it...
+# zstyle ':ganneff:config' pcolor /usr green \
+#     /bin   blue     \
+#     /opt   cyan     \
+#     /sbin  magenta  \
+#     /local yellow   \
+#     /zsh   white
+
 
 ########################################################################
 ### Prompt setup                                                     ###