lotsa changes (oh yay, we love good commit msgs)
authorJoerg Jaspert <joerg@ganneff.de>
Tue, 12 Mar 2013 16:56:37 +0000 (17:56 +0100)
committerJoerg Jaspert <joerg@ganneff.de>
Tue, 12 Mar 2013 16:56:37 +0000 (17:56 +0100)
.zsh/01_Terminfo.zsh
.zsh/05_Functions.zsh
.zsh/20_Prompts.zsh
.zsh/99_Exec.zsh
.zsh/functions/prompt_ganneff_setup
.zsh/net:cms.fra.dlh.de/Exec.zsh

index 4f403fd..2004936 100644 (file)
@@ -18,19 +18,79 @@ __() {
 # Update TERM if we have LC__ORIGINALTERM variable
 # Also, try a sensible term where we have terminfo stuff
 autoload -U colors zsh/terminfo zsh/termcap
-__() {
+__ () {
     local term
     local colors
-    for term in $LC__ORIGINALTERM $TERM ${TERM/-256color} xterm-256color xterm; do
-        TERM=$term 2> /dev/null
-        if (( ${terminfo[colors]:-0} >= 8 )) || \
-            (zmodload zsh/termcap 2> /dev/null) && \
-            (( ${termcap[Co]:-0} >= 8)); then
-            colors
-            break
+    # If the terminal identifies itself as dumb, then we don't try
+    # to mess with it. As our system sure may find a definition
+    # that it thinks might work (just export the right TERM variable
+    # and $terminfo will succeed), yet the dumb terminal won't be able
+    # to handle it.
+    # Easy verified - remove the if here and use M-x shell in emacs.
+    # Have fun.
+    if [[ $TERM != "dumb" ]]; then
+        for term in $LC__ORIGINALTERM $TERM ${TERM/-256color} xterm; do
+            TERM=$term 2> /dev/null
+            if (( ${terminfo[colors]:-0} >= 8 )) || \
+                (zmodload zsh/termcap 2> /dev/null) && \
+                (( ${termcap[Co]:-0} >= 8)); then
+                colors
+                break
+            fi
+        done
+        unset LC__ORIGINALTERM
+        export TERM
+        alias sudo="TERM=xterm command sudo"
+    fi
+} && __
+
+
+docolors()
+{
+    if autoload -Uz colors && colors 2>/dev/null ; then
+        for COLOR in RED GREEN YELLOW BLUE MAGENTA CYAN BLACK WHITE; do
+            eval $COLOR='%{$fg_no_bold[${(L)COLOR}]%}'
+            eval BOLD_$COLOR='%{$fg_bold[${(L)COLOR}]%}'
+        done
+        eval NO_COLOR='%{$reset_color%}'
+    else
+        BLUE=$'%{\e[1;34m%}'
+        RED=$'%{\e[1;31m%}'
+        GREEN=$'%{\e[1;32m%}'
+        CYAN=$'%{\e[1;36m%}'
+        WHITE=$'%{\e[1;37m%}'
+        MAGENTA=$'%{\e[1;35m%}'
+        YELLOW=$'%{\e[1;33m%}'
+        NO_COLOR=$'%{\e[0m%}'
+    fi
+}
+
+# And while setting up terminal related information, lets decide on some
+# more features the terminal may or may not support.
+__ () {
+    # Start out with default values
+    LINEDRAW=false
+    COLORS=false
+
+    # Do we support colors?
+    local colcount=$(tput colors)
+    if [[ ${colcount} -gt 0 ]]; then
+        COLORS="true"
+        # Colors supported, lets setup the variables so later on they can
+        # be used without again having to ensure it is done.
+        docolors
+    fi
+
+    # Is linedrawing supported?
+    if tput acsc >/dev/null; then
+        # For some reason the console says it can do, but then
+        # does not actually do so. At least, not with the way we are
+        # going later.
+        if [[ $TERM != "linux" ]]; then
+            LINEDRAW="true"
         fi
-    done
-    unset LC__ORIGINALTERM
-    export TERM
-    alias sudo="TERM=xterm command sudo"
+    fi
+
+    export COLORS
+    export LINEDRAW
 } && __
index fdfeb9a..71315c7 100644 (file)
@@ -9,20 +9,39 @@ cmd_exists ()
 
 preprint()
 {
-       local my_color i
-       my_color=${2-"$'%{\e[1;31m%}'"}
+       local my_color start stop pipe1 pipe2 hbar out
 
-       hbar=$T_
-       for i in {1..$((74 - ${#1} - 5))}; do
-               hbar=${hbar}$_t_q
-       done
-       hbar=${hbar}$_T
-
-       if [ "$1" != "" ]; then
-               print -Pn "${C_}$my_color;1${_C}${hbar}$T_$_t_u$_T${C_}0;$my_color${_C} $1 ${C_}0;$my_color;1${_C}$T_$_t_t$_t_q$_T\r${C_}0${_C}"
-       else
-               print -Pn "${C_}$my_color;1${_C}${hbar}$T_$_t_q$_t_q$_t_q$_t_q$_t_q$_T${C_}0${_C}"
-       fi
+    if [[ "$COLORS" == "true" ]]; then
+           my_color=${2:-${BOLD_RED}}
+    else
+        my_color=${2:-""}
+    fi
+    if [[ $LINEDRAW == "true" ]]; then
+        # Some stuff to help us draw nice lines
+        start="$terminfo[smacs]"
+        stop="$terminfo[rmacs]"
+        hbar="${start}${(l:$(( 74 - ${#1} - 5 ))::q:)}${stop}"
+        pipe1="u"
+        pipe2="t"
+        draw="q"
+    else
+        start=""
+        stop=""
+        hbar="${start}${(l:$((74 - ${#1} - 5))::-:)}${stop}"
+        pipe1="|"
+        pipe2="|"
+        draw="-"
+    fi
+    out="${my_color}${hbar}${start}"
+    
+       if [[ "${1}" != "" ]]; then
+        out+="${pipe1}${stop}${my_color} $1 ${my_color}${start}${pipe2}"
+    else
+        out+="${draw}${draw}${draw}${draw}"
+    fi
+    out+="${draw}${stop}${NO_COLOR}\r"
+    
+    print -Pn $out
 }
 
 normal_user ()
@@ -69,24 +88,3 @@ if is434; then
         fi
     }
 fi
-
-docolors()
-{
-    if zrcautoload colors && colors 2>/dev/null ; then
-        for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
-            eval BOLD_$color='%{$terminfo[bold]$fg[${(L)color}]%}'
-            eval $color='%{$fg[${(L)color}]%}'
-            (( count = $count + 1 ))
-        done
-        NO_COLOR="%{${reset_color}%}"
-    else
-        BLUE=$'%{\e[1;34m%}'
-        RED=$'%{\e[1;31m%}'
-        GREEN=$'%{\e[1;32m%}'
-        CYAN=$'%{\e[1;36m%}'
-        WHITE=$'%{\e[1;37m%}'
-        MAGENTA=$'%{\e[1;35m%}'
-        YELLOW=$'%{\e[1;33m%}'
-        NO_COLOR=$'%{\e[0m%}'
-    fi
-}
index 90728e7..326bc23 100644 (file)
@@ -14,7 +14,7 @@ if is437; then
          zstyle ':prompt:ganneff:right:setup' use-rprompt true
          zstyle ':prompt:ganneff:left:full:setup' items \
              ulcorner line openbracket user at host pts closebracket line history \
-             flexline openbracket path closebracket line urcorner newline \
+             line shell-level line flexline openbracket path closebracket line urcorner newline \
              llcorner line rc openbracket time closebracket line vcs line change-root pipe space
          zstyle ':prompt:ganneff:right:full:setup' items \
              pipe line openbracket date closebracket line lrcorner
index 3d39ce9..12937e8 100644 (file)
@@ -3,6 +3,6 @@
 if cmd_exists fortune; then
        preprint "Fortune" && echo
        fortune | fmt -s -w 74
-       preprint "" && echo
+       preprint && echo
        echo
 fi | sed 's/^/   /'
index 2e50821..907a1ce 100644 (file)
@@ -145,7 +145,8 @@ prompt_ganneff_setup () {
     setopt nolocaltraps
 
     # See if we can and should use extended characters to look nicer.
-    if zstyle -t ':prompt:ganneff' nicelines && [[ "$TERM" != dumb ]]; then
+    if zstyle -t ':prompt:ganneff' nicelines && [[ "$TERM" != dumb ]] \
+        && [[ "$TERM" != "linux" ]]; then
         typeset -A altchar
         set -A altchar ${(s..)terminfo[acsc]}
         # Some stuff to help us draw nice lines
@@ -307,7 +308,7 @@ ${PR_SHIFT_IN}${PR_HBAR}${PR_CYAN}${PR_HBAR}${PR_SHIFT_OUT}${PR_NO_COLOR} '
         percent           '% # '
         rc                '%(?..%? )'
         rc-always         '%?'
-        shell-level       '%(3L.+ .)'
+        shell-level       '%(2L.%L.)'
         time              '%D{%H:%M:%S}'
         user              '%n'
         vcs               '0'
@@ -361,7 +362,8 @@ prompt_ganneff_precmd () {
     if [[ ${promptsize} -lt ${TERMWIDTH} ]]; then
         # the q here should be ${PR_HBAR}, but for some reason zsh didn't like me,
         # so meh
-        if zstyle -t ':prompt:ganneff' nicelines && [[ "$TERM" != dumb ]]; then
+        if zstyle -t ':prompt:ganneff' nicelines && [[ "$TERM" != dumb ]] \
+            && [[ "$TERM" != "linux" ]]; then
             PR_FLEXLINE="${(l.(($TERMWIDTH - $promptsize ))..q.)}"
         else
             PR_FLEXLINE="${(l.(($TERMWIDTH - $promptsize ))..-.)}"
index e2e6782..c932c43 100644 (file)
@@ -1,3 +1,3 @@
 # -*- mode: sh;-*-
 
-xset b 25 150
+[[ -n "${DISPLAY}" ]] && xset b 25 150