zshrc: New prompt: Remove old prompt setting scheme
[grml-etc-core.git] / etc / zsh / zshrc
index cfb1b97..ad40c2e 100644 (file)
@@ -1540,20 +1540,43 @@ if zrcautoload promptinit && promptinit 2>/dev/null ; then
         add-zsh-hook precmd battery
     fi
     if [[ "$TERM" == dumb ]] ; then
+        zstyle ":prompt:grml(|-large|-chroot):*:items:grml-chroot" pre ''
+        zstyle ":prompt:grml(|-large|-chroot):*:items:grml-chroot" post ' '
         for i in rc user path jobs history date time shell-level; do
             zstyle ":prompt:grml(|-large|-chroot):*:items:$i" pre ''
-            zstyle ':prompt:grml(|-large|-chroot):*:items:$i' post ''
+            zstyle ":prompt:grml(|-large|-chroot):*:items:$i" post ''
         done
         unset i
         zstyle ':prompt:grml(|-large|-chroot):right:setup' use-rprompt false
-    elif (( EUID != 0 )); then
+    elif (( EUID == 0 )); then
         zstyle ':prompt:grml(|-large|-chroot):*:items:user' pre '%F{red}'
     fi
+
+    # Finally enable one of the prompts.
+    if [[ -n $GRML_CHROOT ]]; then
+        prompt grml-chroot
+    elif [[ $GRMLPROMPT -gt 0 ]]; then
+        prompt grml-large
+    else
+        prompt grml
+    fi
 else
     print 'Notice: no promptinit available :('
-fi
 
-setopt prompt_subst
+    # Support a fallback, in case promptsys isn't available.
+    setopt prompt_subst
+
+    precmd() { (( ${+functions[vcs_info]} )) && vcs_info; }
+
+    p0="${RED}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}"
+    p1="${BLUE}%n${NO_COLOR}@%m %40<...<%B%~%b%<< "'${vcs_info_msg_0_}'"%# "
+    if (( EUID == 0 )); then
+        PROMPT="${BLUE}${p0}${RED}${p1}"
+    else
+        PROMPT="${RED}${p0}${BLUE}${p1}"
+    fi
+    unset p0 p1
+fi
 
 # make sure to use right prompt only when not running a command
 is41 && setopt transient_rprompt
@@ -1641,33 +1664,6 @@ if [[ -z "$debian_chroot" ]] && [[ -r /etc/debian_chroot ]] ; then
     debian_chroot=$(cat /etc/debian_chroot)
 fi
 
-# don't use colors on dumb terminals (like emacs):
-if [[ "$TERM" == dumb ]] ; then
-    PROMPT="${EXITCODE}${debian_chroot:+($debian_chroot)}%n@%m %40<...<%B%~%b%<< "
-else
-    # only if $GRMLPROMPT is set (e.g. via 'GRMLPROMPT=1 zsh') use the extended
-    # prompt set variable identifying the chroot you work in (used in the
-    # prompt below)
-    if [[ $GRMLPROMPT -gt 0 ]] ; then
-        PROMPT="${RED}${EXITCODE}${CYAN}[%j running job(s)] ${GREEN}{history#%!} ${RED}%(3L.+.) ${BLUE}%* %D
-${BLUE}%n${NO_COLOR}@%m %40<...<%B%~%b%<< "
-    else
-        # This assembles the primary prompt string
-        if (( EUID != 0 )); then
-            PROMPT="${RED}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${BLUE}%n${NO_COLOR}@%m %40<...<%B%~%b%<< "
-        else
-            PROMPT="${BLUE}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${RED}%n${NO_COLOR}@%m %40<...<%B%~%b%<< "
-        fi
-    fi
-fi
-
-PROMPT="${PROMPT}"'${vcs_info_msg_0_}'"%# "
-
-# if we are inside a grml-chroot set a specific prompt theme
-if [[ -n "$GRML_CHROOT" ]] ; then
-    PROMPT="%{$fg[red]%}(CHROOT) %{$fg_bold[red]%}%n%{$fg_no_bold[white]%}@%m %40<...<%B%~%b%<< %\# "
-fi
-
 # 'hash' some often used directories
 #d# start
 hash -d deb=/var/cache/apt/archives