zshrc: check for empty DONTSETRPROMPT and NOTITLE
[grml-etc-core.git] / etc / zsh / zshrc
index 0e5d924..0f6c36f 100644 (file)
@@ -1325,7 +1325,7 @@ is4 && [[ $NOPRECMD -eq 0 ]] && precmd () {
         fi
     fi
     # just use DONTSETRPROMPT=1 to be able to overwrite RPROMPT
-    if [[ $DONTSETRPROMPT -eq 0 ]] ; then
+    if [[ ${DONTSETRPROMPT:-} -eq 0 ]] ; then
         if [[ $BATTERY -gt 0 ]] ; then
             # update battery (dropped into $PERCENT) information
             battery
@@ -1336,7 +1336,7 @@ is4 && [[ $NOPRECMD -eq 0 ]] && precmd () {
     fi
     # adjust title of xterm
     # see http://www.faqs.org/docs/Linux-mini/Xterm-Title.html
-    [[ ${NOTITLE} -gt 0 ]] && return 0
+    [[ ${NOTITLE:-} -gt 0 ]] && return 0
     case $TERM in
         (xterm*|rxvt*)
             set_title ${(%):-"%n@%m: %~"}
@@ -2109,6 +2109,8 @@ alias help-zshglob=H-Glob
 
 #v1# set number of lines to display per page
 HELP_LINES_PER_PAGE=20
+#v1# set location of help-zle cache file
+HELP_ZLE_CACHE_FILE=~/.cache/zsh_help_zle_lines.zsh
 #f1# helper function for help-zle, actually generates the help text
 help_zle_parse_keybindings()
 {
@@ -2119,6 +2121,12 @@ help_zle_parse_keybindings()
     #v1# choose files that help-zle will parse for keybindings
     ((${+HELPZLE_KEYBINDING_FILES})) || HELPZLE_KEYBINDING_FILES=( /etc/zsh/zshrc ~/.zshrc.pre ~/.zshrc ~/.zshrc.local )
 
+    if [[ -r $HELP_ZLE_CACHE_FILE ]]; then
+        local load_cache=0
+        for f ($KEYBINDING_FILES) [[ $f -nt $HELP_ZLE_CACHE_FILE ]] && load_cache=1
+        [[ $load_cache -eq 0 ]] && . $HELP_ZLE_CACHE_FILE && return
+    fi
+
     #fill with default keybindings, possibly to be overwriten in a file later
     #Note that due to zsh inconsistency on escaping assoc array keys, we encase the key in '' which we will remove later
     local -A help_zle_keybindings
@@ -2197,6 +2205,9 @@ help_zle_parse_keybindings()
     done
     #sort lines alphabetically
     help_zle_lines=("${(i)help_zle_lines[@]}")
+    [[ -d ${HELP_ZLE_CACHE_FILE:h} ]] || mkdir -p "${HELP_ZLE_CACHE_FILE:h}"
+    echo "help_zle_lines=(${(q)help_zle_lines[@]})" >| $HELP_ZLE_CACHE_FILE
+    zcompile $HELP_ZLE_CACHE_FILE
 }
 typeset -g help_zle_sln
 typeset -g -a help_zle_lines
@@ -2470,17 +2481,6 @@ fi
 # set terminal property (used e.g. by msgid-chooser)
 export COLORTERM="yes"
 
-# set default browser
-if [[ -z "$BROWSER" ]] ; then
-    if [[ -n "$DISPLAY" ]] ; then
-        #v# If X11 is running
-        check_com -c firefox && export BROWSER=firefox
-    else
-        #v# If no X11 is running
-        check_com -c w3m && export BROWSER=w3m
-    fi
-fi
-
 #m# v QTDIR \kbd{/usr/share/qt[34]}\quad [for non-root only]
 [[ -d /usr/share/qt3 ]] && export QTDIR=/usr/share/qt3
 [[ -d /usr/share/qt4 ]] && export QTDIR=/usr/share/qt4
@@ -2555,8 +2555,10 @@ alias r--='chmod 644'
 alias r-x='chmod 755'
 
 # some useful aliases
-#a2# Execute \kbd{mkdir -o}
+#a2# Execute \kbd{mkdir -p}
 alias md='mkdir -p'
+#a2# Remove current empty directory. Execute \kbd{cd ..; rmdir $OLDCWD}
+alias rmcdir='cd ..; rmdir $OLDPWD || cd $OLDPWD'
 
 # console stuff
 #a2# Execute \kbd{mplayer -vo fbdev}
@@ -2799,7 +2801,7 @@ inplaceMkDirs() {
         bufwords=(${(z)LBUFFER})
         iword=${#bufwords}
         bufwords=(${(z)BUFFER})
-        PATHTOMKDIR="$bufwords[iword]"
+        PATHTOMKDIR="${(Q)bufwords[iword]}"
     fi
     [[ -z "${PATHTOMKDIR}" ]] && return 1
     if [[ -e "${PATHTOMKDIR}" ]]; then
@@ -3165,7 +3167,7 @@ simple-extract() {
 
         elif [[ "$ARCHIVE" == (#s)(https|http|ftp)://* ]] ; then
             if check_com curl; then
-                WGET_CMD="curl -k -s -o -"
+                WGET_CMD="curl -L -k -s -o -"
             elif check_com wget; then
                 WGET_CMD="wget -q -O - --no-check-certificate"
             else
@@ -3269,8 +3271,9 @@ vman() {
 #f5# View all README-like files in current directory in pager
 readme() {
     emulate -L zsh
+    setopt extendedglob
     local files
-    files=(./(#i)*(read*me|lue*m(in|)ut)*(ND))
+    files=(./(#i)*(read*me|lue*m(in|)ut|lies*mich)*(NDr^/=p%))
     if (($#files)) ; then
         $PAGER $files
     else