PYENV prompt.
[profile.git] / .profile.d / ps1.bashrc
index e7d3658..7c4cf2c 100644 (file)
@@ -131,7 +131,7 @@ function __ps1_colour_for() {
   local colour=
   local ret=
   for colour in "${1}_colour${__ps1_colours}" "${1}_colour"; do
-    ret=$(eval echo -n "\$$colour")
+    eval "export ret=\$$colour"
     [ -n "$ret" ] && break
   done
   echo -n $ret
@@ -140,7 +140,7 @@ function __ps1_colour_for() {
 function __ps1_prefix() {
   local var=\$${2#\$}
   local prefix=${__ps1_all%$var*}
-  local all="$(eval echo $prefix)"
+  eval "all=\$$prefix"
   [ "${all/1/}" = "$all" ] || echo -n " "
   return $1
 }
@@ -238,7 +238,7 @@ function __ps1_short() {
   local pwd=${PWD/#$home/\~}
   local dirtrim=${PROMPT_DIRTRIM//[^0-9]/}
 
-  if [ "${dirtrim:0:1}" = "0" ]; then
+  if [ "${dirtrim:0:1}" = "0" -o "$PWD" = "$HOME" ]; then
     echo "$pwd"
     return $1
   fi
@@ -265,7 +265,7 @@ function __ps1_short() {
   local n=1
   local short=
   for component in $reversed; do
-    [ $n = 1 -a "$PWD" = "$pwd" ] || short="/$short"
+    [ $n = 1 ] || short="/$short"
     if [ $n -ge $dirtrim ]; then
       short="${component:0:1}$short"
     else
@@ -274,7 +274,7 @@ function __ps1_short() {
     n=$((n+1))
   done
 
-  [ "${short:0:1}" = "~" ] || short="/$short"
+  [ "${short:0:1}" = "~" -o -z "$basename" ] || short="/$short"
   echo "$short/$dirname"
   return $1
 }
@@ -299,7 +299,7 @@ function prompt() {
   fi
 
   what="$(echo $2 | env LANG= LC_ALL= LC_CTYPE= tr '[:upper:]' '[:lower:]')"
-  eval __ps1_$what=$action
+  eval "__ps1_$what=$action"
 }
 
 __ps1