zshrc: Switch `minimal-shell()' from ksh93 to mksh
[grml-etc-core.git] / etc / zsh / zshrc
index f7c332b..e30f511 100644 (file)
@@ -134,7 +134,12 @@ is43(){
 }
 
 is433(){
-    [[ $ZSH_VERSION == 4.3.<3->* || $ZSH_VERSION == <5->* ]] && return 0
+    [[ $ZSH_VERSION == 4.3.<3->* || $ZSH_VERSION == 4.<4->* || $ZSH_VERSION == <5->* ]] && return 0
+    return 1
+}
+
+is439(){
+    [[ $ZSH_VERSION == 4.3.<9->* || $ZSH_VERSION == 4.<4->* || $ZSH_VERSION == <5->* ]] && return 0
     return 1
 }
 
@@ -276,6 +281,7 @@ setopt nobeep               # avoid "beep"ing
 setopt pushd_ignore_dups    # don't push the same dir twice.
 setopt noglobdots           # * shouldn't match dotfiles. ever.
 setopt noshwordsplit        # use zsh style word splitting
+setopt unset                # don't error out when unset parameters are used
 
 # }}}
 
@@ -291,79 +297,6 @@ GRMLSMALL_SPECIFIC=${GRMLSMALL_SPECIFIC:-1}
 GRML_ALWAYS_LOAD_ALL=${GRML_ALWAYS_LOAD_ALL:-0}
 ZSH_NO_DEFAULT_LOCALE=${ZSH_NO_DEFAULT_LOCALE:-0}
 
-if isgrmlcd ; then
-    GRML_WARN_SKEL=${GRML_WARN_SKEL:-0}
-else
-    GRML_WARN_SKEL=${GRML_WARN_SKEL:-1}
-fi
-
-if (( GRML_WARN_SKEL != 0 )) ; then
-
-function grml_warn_skel_main() {
-    printf '
-Dear user,
-
-You updated grml'\''s zshrc which brings a major change.
-The configuration is kept only in one file, being the global zshrc.
-In the past, the configuration was split in two files, with the
-second file being the .zshrc file from /etc/skel.
-
-If you have a .zshrc file in your home directory that originally
-came from the skel directory, please remove it. This is also the case
-if you followed earlier instructions from the grml-zsh-refcard or
-from <http://grml.org/console/> on non-grml systems.
-
-Please see the current grml-zsh-refcard (available at
-<http://grml.org/zsh/>) for updated installation information. In short,
-you don'\''t want a .zshrc.global file. Install the global zshrc to
-~/.zshrc and be done.
-
-If you need changes to the configuration, use ~/.zshrc.pre and
-~/.zshrc.local.
-
-'
-}
-
-function grml_warn_skel_remove() {
-    printf 'To remove this warning execute '\''grml_do_not_warn_skel'\''.\n\n'
-}
-
-function grml_do_not_warn_skel() {
-    printf '# Do not warn about old skel dot-files anymore\n' >>! ~/.zshrc.pre
-    printf 'GRML_WARN_SKEL=0\n' >>! ~/.zshrc.pre
-}
-
-# let's try to guess how the user uses us.
-if is-at-least 4.3.7 ; then
-    # funcsourcetrace requires at least version 4.3.7 of zsh.
-    GRML_SRC_FILE="${${funcsourcetrace[1]}%:*}"
-
-    grml_warn_skel_main
-    case ${GRML_SRC_FILE} in
-        (${HOME}/.zshrc.global)
-            grml_warn_skel_remove
-            printf '\nIt looks like you copied the grml zshrc to '\''~/.zshrc.global'\''.\n'
-            printf 'Nowadays you just copy the global zshrc to '\''~/.zshrc'\'' to use\n'
-            printf 'it on a non-grml-system.\n'
-            ;;
-        (${HOME}/.zshrc)
-            printf '\nIt looks like you copied the grml zshrc to '\''~/.zshrc'\''.\n'
-            printf 'We'\''ll disable this warning automatically for later sessions.\n'
-            grml_do_not_warn_skel
-            ;;
-        (*)
-            grml_do_not_warn_skel
-            ;;
-    esac
-else
-    grml_warn_skel_main
-    grml_warn_skel_remove
-fi
-
-unfunction grml_warn_skel_remove grml_warn_skel_main
-
-fi # GRML_WARN_SKEL
-
 # }}}
 
 # utility functions {{{
@@ -540,32 +473,6 @@ xsource "/etc/sysconfig/keyboard"
 TZ=$(xcat /etc/timezone)
 # }}}
 
-# check for potentially old files in 'completion.d' {{{
-setopt extendedglob
-xof=(/etc/zsh/completion.d/*~/etc/zsh/completion.d/_*(N))
-if (( ${#xof} > 0 )) ; then
-    printf '\n -!- INFORMATION\n\n'
-    printf ' -!- %s file(s) not starting with an underscore (_) found in\n' ${#xof}
-    printf ' -!- /etc/zsh/completion.d/.\n\n'
-    printf ' -!- While this has been the case in old versions of grml-etc-core,\n'
-    printf ' -!- recent versions of the grml-zsh-setup have all these files rewritten\n'
-    printf ' -!- and renamed. Furthermore, the grml-zsh-setup will *only* add files\n'
-    printf ' -!- named _* to that directory.\n\n'
-    printf ' -!- If you added functions to completion.d yourself, please consider\n'
-    printf ' -!- moving them to /etc/zsh/functions.d/. Files in that directory, not\n'
-    printf ' -!- starting with an underscore are marked for automatic loading\n'
-    printf ' -!- by default (so that is quite convenient).\n\n'
-    printf ' -!- If there are files *not* starting with an underscore from an older\n'
-    printf ' -!- grml-etc-core in completion.d, you may safely remove them.\n\n'
-    printf ' -!- Delete the files for example via running:\n\n'
-    printf "      rm ${xof}\n\n"
-    printf ' -!- Note, that this message will *not* go away, unless you yourself\n'
-    printf ' -!- resolve the situation manually.\n\n'
-    BROKEN_COMPLETION_DIR=1
-fi
-unset xof
-# }}}
-
 # {{{ set some variables
 if check_com -c vim ; then
 #v#
@@ -680,19 +587,6 @@ zle -N insert-unicode-char
 #k# Insert Unicode character
 bindkey '^Xi' insert-unicode-char
 
-# just type 'cd ...' to get 'cd ../..'
-#  rationalise-dot() {
-#  if [[ $LBUFFER == *.. ]] ; then
-#    LBUFFER+=/..
-#  else
-#    LBUFFER+=.
-#  fi
-#  }
-#  zle -N rationalise-dot
-#  bindkey . rationalise-dot
-
-#  bindkey '\eq' push-line-or-edit
-
 ## toggle the ,. abbreviation feature on/off
 # NOABBREVIATION: default abbreviation-state
 #                 0 - enabled (default)
@@ -729,6 +623,11 @@ zle -N slash-backward-kill-word
 #k# Kill everything in a word up to its last \kbd{/}
 bindkey '\ev' slash-backward-kill-word
 
+# use the new *-pattern-* widgets for incremental history search
+if is439 ; then
+    bindkey '^r' history-incremental-pattern-search-backward
+    bindkey '^s' history-incremental-pattern-search-forward
+fi
 # }}}
 
 # a generic accept-line wrapper {{{
@@ -751,7 +650,7 @@ bindkey '\ev' slash-backward-kill-word
 zstyle ':acceptline:*' rehash true
 
 function Accept-Line() {
-    setopt localoptions noksharrays
+    emulate -L zsh
     local -a subs
     local -xi aldone
     local sub
@@ -770,6 +669,7 @@ function Accept-Line() {
 }
 
 function Accept-Line-getdefault() {
+    emulate -L zsh
     local default_action
 
     zstyle -s ":acceptline:${alcontext}" default_action default_action
@@ -784,7 +684,7 @@ function Accept-Line-getdefault() {
 }
 
 function accept-line() {
-    setopt localoptions noksharrays
+    emulate -L zsh
     local -a cmdline
     local -x alcontext
     local buf com fname format msg default_action
@@ -938,7 +838,9 @@ alias url-quote='autoload -U url-quote-magic ; zle -N self-insert url-quote-magi
 
 #m# k ESC-h Call \kbd{run-help} for the 1st word on the command line
 alias run-help >&/dev/null && unalias run-help
-zrcautoload run-help # use via 'esc-h'
+for rh in run-help{,-git,-svk,-svn}; do
+    zrcautoload $rh
+done; unset rh
 
 # completion system
 if zrcautoload compinit ; then
@@ -1064,10 +966,12 @@ if [[ -f ${DIRSTACKFILE} ]] && [[ ${#dirstack[*]} -eq 0 ]] ; then
 fi
 
 chpwd() {
+    local -ax my_stack
+    my_stack=( ${PWD} ${dirstack} )
     if is42 ; then
-        builtin print -l ${(u)dirstack} >! ${DIRSTACKFILE}
+        builtin print -l ${(u)my_stack} >! ${DIRSTACKFILE}
     else
-        uprint dirstack >! ${DIRSTACKFILE}
+        uprint my_stack >! ${DIRSTACKFILE}
     fi
 }
 
@@ -1704,30 +1608,38 @@ VCS_INFO_git_getaction () { #{{{
 }
 # }}}
 VCS_INFO_git_getbranch () { #{{{
-    local gitbranch gitdir=$1
+    local gitbranch gitdir=$1 tmp actiondir
     local gitsymref='git symbolic-ref HEAD'
 
-    if    [[ -d "${gitdir}/rebase-apply" ]] \
-       || [[ -d "${gitdir}/rebase" ]]       \
-       || [[ -d "${gitdir}/../.dotest" ]]   \
-       || [[ -f "${gitdir}/MERGE_HEAD" ]] ; then
+    actiondir=''
+    for tmp in "${gitdir}/rebase-apply" \
+               "${gitdir}/rebase"       \
+               "${gitdir}/../.dotest"; do
+        if [[ -d ${tmp} ]]; then
+            actiondir=${tmp}
+            break
+        fi
+    done
+    if [[ -n ${actiondir} ]]; then
+        gitbranch="$(${(z)gitsymref} 2> /dev/null)"
+        [[ -z ${gitbranch} ]] && [[ -r ${actiondir}/head-name ]] \
+            && gitbranch="$(< ${actiondir}/head-name)"
+
+    elif [[ -f "${gitdir}/MERGE_HEAD" ]] ; then
         gitbranch="$(${(z)gitsymref} 2> /dev/null)"
-        [[ -z ${gitbranch} ]] && [[ -r ${gitdir}/rebase-apply/head-name ]] \
-            && gitbranch="$(< ${gitdir}/rebase-apply/head-name)"
+        [[ -z ${gitbranch} ]] && gitbranch="$(< ${gitdir}/MERGE_HEAD)"
 
-    elif   [[ -f "${gitdir}/rebase-merge/interactive" ]] \
-        || [[ -d "${gitdir}/rebase-merge" ]] ; then
+    elif [[ -d "${gitdir}/rebase-merge" ]] ; then
         gitbranch="$(< ${gitdir}/rebase-merge/head-name)"
 
-    elif   [[ -f "${gitdir}/.dotest-merge/interactive" ]] \
-        || [[ -d "${gitdir}/.dotest-merge" ]] ; then
+    elif [[ -d "${gitdir}/.dotest-merge" ]] ; then
         gitbranch="$(< ${gitdir}/.dotest-merge/head-name)"
 
     else
         gitbranch="$(${(z)gitsymref} 2> /dev/null)"
 
         if [[ $? -ne 0 ]] ; then
-            gitbranch="$(git describe --exact-match HEAD 2>/dev/null)"
+            gitbranch="refs/tags/$(git describe --exact-match HEAD 2>/dev/null)"
 
             if [[ $? -ne 0 ]] ; then
                 gitbranch="${${"$(< $gitdir/HEAD)"}[1,7]}..."
@@ -1735,7 +1647,7 @@ VCS_INFO_git_getbranch () { #{{{
         fi
     fi
 
-    printf '%s' "${gitbranch##refs/heads/}"
+    printf '%s' "${gitbranch##refs/[^/]##/}"
     return 0
 }
 # }}}
@@ -1827,6 +1739,7 @@ VCS_INFO_detect_by_dir() { #{{{
 
     realbasedir="$(VCS_INFO_realpath ${basedir})"
     while [[ ${realbasedir} != '/' ]]; do
+        [[ -r ${realbasedir} ]] || return 1
         if [[ -n ${vcs_comm[detect_need_file]} ]] ; then
             [[ -d ${basedir}/${dirname} ]] && \
             [[ -e ${basedir}/${dirname}/${vcs_comm[detect_need_file]} ]] && \
@@ -1948,6 +1861,7 @@ vcs_info_printsys () { # {{{
 }
 # }}}
 vcs_info_lastmsg () { # {{{
+    emulate -L zsh
     local -i i
 
     VCS_INFO_maxexports
@@ -1963,6 +1877,11 @@ vcs_info_lastmsg () { # {{{
 }
 # }}}
 vcs_info () { # {{{
+    emulate -L zsh
+    setopt extendedglob
+
+    [[ -r . ]] || return 1
+
     local pat
     local -i found
     local -a VCSs disabled dps
@@ -2078,6 +1997,26 @@ setopt prompt_subst
 # make sure to use right prompt only when not running a command
 is41 && setopt transient_rprompt
 
+
+function ESC_print () {
+    info_print $'\ek' $'\e\\' "$@"
+}
+function set_title () {
+    info_print  $'\e]0;' $'\a' "$@"
+}
+
+function info_print () {
+    local esc_begin esc_end
+    esc_begin="$1"
+    esc_end="$2"
+    shift 2
+    printf '%s' ${esc_begin}
+    for item in "$@" ; do
+        printf '%s ' "$item"
+    done
+    printf '%s' "${esc_end}"
+}
+
 # TODO: revise all these NO* variables and especially their documentation
 #       in zsh-help() below.
 is4 && [[ $NOPRECMD -eq 0 ]] && precmd () {
@@ -2087,9 +2026,9 @@ is4 && [[ $NOPRECMD -eq 0 ]] && precmd () {
 
     if [[ $TERM == screen* ]] ; then
         if [[ -n ${VCS_INFO_message_1_} ]] ; then
-            print -nP "\ek${VCS_INFO_message_1_}\e\\"
+            ESC_print ${VCS_INFO_message_1_}
         else
-            print -nP "\ekzsh\e\\"
+            ESC_print "zsh"
         fi
     fi
     # just use DONTSETRPROMPT=1 to be able to overwrite RPROMPT
@@ -2107,7 +2046,7 @@ is4 && [[ $NOPRECMD -eq 0 ]] && precmd () {
     [[ ${NOTITLE} -gt 0 ]] && return 0
     case $TERM in
         (xterm*|rxvt*)
-            print -Pn "\e]0;%n@%m: %~\a"
+            set_title ${(%):-"%n@%m: %~"}
             ;;
     esac
 }
@@ -2125,13 +2064,13 @@ preexec () {
     if [[ "$TERM" == screen* ]] ; then
         # local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]}       # don't use hostname
         local CMD="${1[(wr)^(*=*|sudo|ssh|-*)]}$NAME" # use hostname
-        echo -ne "\ek$CMD\e\\"
+        ESC_print ${CMD}
     fi
 # adjust title of xterm
     [[ ${NOTITLE} -gt 0 ]] && return 0
     case $TERM in
         (xterm*|rxvt*)
-            print -Pn "\e]0;%n@%m: $1\a"
+            set_title "${(%):-"%n@%m:"}" "$1"
             ;;
     esac
 }
@@ -2154,7 +2093,7 @@ else
     # 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_COLOUR}@%m %40<...<%B%~%b%<< %# "
+${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< "'${VCS_INFO_message_0_}'"%# "
     else
         # This assembles the primary prompt string
         if (( EUID != 0 )); then
@@ -2231,7 +2170,7 @@ alias rm='nocorrect rm'         # no spelling correction on rm
 
 #a1# Execute \kbd{rmdir}
 alias rd='rmdir'
-#a1# Execute \kbd{rmdir}
+#a1# Execute \kbd{mkdir}
 alias md='mkdir'
 
 # see http://www.cl.cam.ac.uk/~mgk25/unicode.html#term for details
@@ -2266,7 +2205,6 @@ swspeak() {
        export PS1="%m%# "
        /usr/sbin/swspeak-setup $@
      else # old version:
-        aumix -w 90 -v 90 -p 90 -m 90
         if ! [[ -r /dev/softsynth ]] ; then
             flite -o play -t "Sorry, software synthesizer not available. Did you boot with swspeak bootoption?"
             return 1
@@ -2433,12 +2371,17 @@ if check_com -c grep-status ; then
 fi
 
 # if cdrecord is a symlink (to wodim) or isn't present at all warn:
-if [[ -L /usr/bin/cdrecord ]] || ! check_com -c cdrecord ; then
-    if check_com -c wodim ; then
-        alias cdrecord="echo 'cdrecord is not provided under its original name by Debian anymore.
+if [[ -L /usr/bin/cdrecord ]] || ! check_com -c cdrecord; then
+    if check_com -c wodim; then
+        cdrecord() {
+            cat <<EOMESS
+cdrecord is not provided under its original name by Debian anymore.
 See #377109 in the BTS of Debian for more details.
 
-Please use the wodim binary instead' ; return 1"
+Please use the wodim binary instead
+EOMESS
+            return 1
+        }
     fi
 fi
 
@@ -2664,8 +2607,12 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
         fi
     }
 
-    if check_com -c 915resolution ; then
-        alias 855resolution='echo -e "Please use 915resolution as resolution modify tool for Intel graphic chipset."; return -1'
+    if check_com -c 915resolution; then
+        855resolution() {
+            echo "Please use 915resolution as resolution modifying tool for Intel \
+graphic chipset."
+            return -1
+        }
     fi
 
     #a1# Output version of running grml
@@ -2677,7 +2624,10 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
     fi
 
     if check_com -c grml-debootstrap ; then
-        alias debian2hd='print "Installing debian to harddisk is possible via using grml-debootstrap." ; return 1'
+        debian2hd() {
+            echo "Installing debian to harddisk is possible by using grml-debootstrap."
+            return 1
+        }
     fi
 }
 # }}}
@@ -2714,23 +2664,7 @@ setenv()  { typeset -x "${1}${1:+=}${(@)argv[2,$#]}" }  # csh compatibility
 
 #f1# Reload an autoloadable function
 freload() { while (( $# )); do; unfunction $1; autoload -U $1; shift; done }
-
-# TODO: Who really uses reload()? The proper way to reload a zsh setup is to
-# actually restart the shell via 'exec zsh'. And reload with arguments is the
-# same as freload() above. -ft
-#f1# Reload zsh setup
-reload() {
-    if [[ "$#*" -eq 0 ]] ; then
-        [[ -r ~/.zshrc ]] && . ~/.zshrc
-    else
-        local fn
-        for fn in "$@"; do
-            unfunction $fn
-            autoload -U $fn
-        done
-    fi
-}
-compdef _functions reload freload
+compdef _functions freload
 
 #f1# List symlinks in detail (more detailed version of 'readlink -f' and 'whence -s')
 sll() {
@@ -3019,9 +2953,17 @@ iwclient() {
     salias dhclient "$(wavemon -d | awk '/device/{print $2}')"
 }
 
-# spawn a minimally set up ksh - useful if you want to umount /usr/.
+# spawn a minimally set up mksh - useful if you want to umount /usr/.
 minimal-shell() {
-    exec env -i ENV="/etc/minimal-shellrc" HOME="$HOME" TERM="$TERM" ksh
+    emulate -L zsh
+    local shell="mksh"
+
+    if ! check_com -c ${shell}; then
+        printf '`%s'\'' not available, giving up.\n' ${shell} >&2
+        return 1
+    fi
+
+    exec env -i ENV="/etc/minimal-shellrc" HOME="$HOME" TERM="$TERM" ${shell}
 }
 
 # a wrapper for vim, that deals with title setting
@@ -3097,6 +3039,41 @@ exit 0;
     return $?
 }
 
+ssl_hashes=( sha512 sha256 sha1 md5 )
+
+for sh in ${ssl_hashes}; do
+    ssl-cert-${sh}() {
+        emulate -L zsh
+        if [[ -z $1 ]] ; then
+            printf 'usage: %s <file>\n' "ssh-cert-${sh}"
+            return 1
+        fi
+        openssl x509 -noout -fingerprint -${sh} -in $1
+    }
+done; unset sh
+
+ssl-cert-fingerprints() {
+    emulate -L zsh
+    local i
+    if [[ -z $1 ]] ; then
+        printf 'usage: ssl-cert-fingerprints <file>\n'
+        return 1
+    fi
+    for i in ${ssl_hashes}
+        do ssl-cert-$i $1;
+    done
+}
+
+ssl-cert-info() {
+    emulate -L zsh
+    if [[ -z $1 ]] ; then
+        printf 'usage: ssl-cert-info <file>\n'
+        return 1
+    fi
+    openssl x509 -noout -text -in $1
+    ssl-cert-fingerprints $1
+}
+
 # }}}
 
 # {{{ make sure our environment is clean regarding colors
@@ -3171,20 +3148,6 @@ alias CO="./configure"
 #a2# Execute \kbd{./configure --help}
 alias CH="./configure --help"
 
-# arch/tla stuff
-if check_com -c tla ; then
-    #a2# Execute \kbd{tla what-changed --diffs | less}
-    alias tdi='tla what-changed --diffs | less'
-    #a2# Execute \kbd{tla-buildpackage}
-    alias tbp='tla-buildpackage'
-    #a2# Execute \kbd{tla archive-mirror}
-    alias tmi='tla archive-mirror'
-    #a2# Execute \kbd{tla commit}
-    alias tco='tla commit'
-    #a2# Execute \kbd{tla star-merge}
-    alias tme='tla star-merge'
-fi
-
 # listing stuff
 #a2# Execute \kbd{ls -lSrah}
 alias dir="ls -lSrah"
@@ -3195,9 +3158,9 @@ alias lsa='ls -a .*(.)'                # only show dot-files
 #a2# Only files with setgid/setuid/sticky flag
 alias lss='ls -l *(s,S,t)'             # only files with setgid/setuid/sticky flag
 #a2# Only show 1st ten symlinks
-alias lsl='ls -l *(@[1,10])'           # only symlinks
+alias lsl='ls -l *(@)'                 # only symlinks
 #a2# Display only executables
-alias lsx='ls -l *(*[1,10])'           # only executables
+alias lsx='ls -l *(*)'                 # only executables
 #a2# Display world-{readable,writable,executable} files
 alias lsw='ls -ld *(R,W,X.^ND/)'       # world-{readable,writable,executable} files
 #a2# Display the ten biggest files
@@ -3227,8 +3190,6 @@ alias r-x='chmod 755'
 #a2# Execute \kbd{mkdir -o}
 alias md='mkdir -p'
 
-check_com -c ipython && alias ips='ipython -p sh'
-
 # console stuff
 #a2# Execute \kbd{mplayer -vo fbdev}
 alias cmplayer='mplayer -vo fbdev'
@@ -3247,12 +3208,6 @@ check_com -c python && alias http="python -m SimpleHTTPServer"
 # Use 'g' instead of 'git':
 check_com g || alias g='git'
 
-# check whether Debian's package management (dpkg) is running
-if check_com salias ; then
-    #a2# Check whether a dpkg instance is currently running
-    salias check_dpkg_running="dpkg_running"
-fi
-
 # work around non utf8 capable software in utf environment via $LANG and luit
 if check_com isutfenv && check_com luit ; then
     if check_com -c mrxvt ; then
@@ -3422,7 +3377,11 @@ disassemble(){
 }
 #f5# Firefox remote control - open given URL
 fir() {
-    firefox -a firefox -remote "openURL($1)"
+    if [ -e /etc/debian_version ]; then
+        firefox -a iceweasel -remote "openURL($1)" || firefox ${1}&
+    else
+        firefox -a firefox -remote "openURL($1)" || firefox ${1}&
+    fi
 }
 #f5# Create Directoy and \kbd{cd} to it
 mcd() {
@@ -3436,26 +3395,16 @@ mdiff() {
 memusage() {
     ps aux | awk '{if (NR > 1) print $5; if (NR > 2) print "+"} END { print "p" }' | dc
 }
-#f5# Show contents of tar file
+#f5# Show contents of gzipped tar file
 shtar() {
     emulate -L zsh
     gunzip -c $1 | tar -tf - -- | $PAGER
 }
-#f5# Show contents of tgz file
-shtgz() {
-    emulate -L zsh
-    tar -ztf $1 | $PAGER
-}
 #f5# Show contents of zip file
 shzip() {
     emulate -L zsh
     unzip -l $1 | $PAGER
 }
-#f5# Greps signature from file
-sig() {
-    emulate -L zsh
-    agrep -d '^-- $' "$*" ~/.Signature
-}
 #f5# Unified diff
 udiff() {
     emulate -L zsh
@@ -3467,17 +3416,6 @@ viless() {
     vim --cmd 'let no_plugin_maps = 1' -c "so \$VIMRUNTIME/macros/less.vim" "${@:--}"
 }
 
-# download video from youtube
-ytdl() {
-    emulate -L zsh
-    if ! [[ -n "$2" ]] ; then
-        print "Usage: ydtl http://youtube.com/watch?v=.... outputfile.flv">&2
-        return 1
-    else
-        wget -O${2} "http://youtube.com/get_video?"${${${"$(wget -o/dev/null -O- "${1}" | grep -e watch_fullscreen)"}##*watch_fullscreen\?}%%\&fs=*}
-    fi
-}
-
 # Function Usage: uopen $URL/$file
 #f5# Download a file and display it locally
 uopen() {
@@ -3517,7 +3455,7 @@ limg() {
     if [[ $#images -eq 0 ]] ; then
         print "No image files found"
     else
-        ls "$@" "$images[@]"
+        ls "$images[@]"
     fi
 }
 
@@ -3606,7 +3544,7 @@ purge() {
             rm ${FILES}
             echo ">> $PWD purged, $NBFILES files removed"
         else
-            echo "Ok. .. than not.."
+            echo "Ok. .. then not.."
         fi
     fi
 }
@@ -3774,19 +3712,8 @@ ansi-colors() {
     done
 }
 
-# suidfind() { ls -latg $path | grep '^...s' }
 #f5# Find all files in \$PATH with setuid bit set
-suidfind() { ls -latg $path/*(sN) }
-
-# See above but this is /better/ ... anywise ..
-findsuid() {
-    print 'Output will be written to ~/suid_* ...'
-    $SUDO find / -type f \( -perm -4000 -o -perm -2000 \) -ls > ~/suid_suidfiles.`date "+%Y-%m-%d"`.out 2>&1
-    $SUDO find / -type d \( -perm -4000 -o -perm -2000 \) -ls > ~/suid_suiddirs.`date "+%Y-%m-%d"`.out 2>&1
-    $SUDO find / -type f \( -perm -2 -o -perm -20 \) -ls > ~/suid_writefiles.`date "+%Y-%m-%d"`.out 2>&1
-    $SUDO find / -type d \( -perm -2 -o -perm -20 \) -ls > ~/suid_writedirs.`date "+%Y-%m-%d"`.out 2>&1
-    print 'Finished'
-}
+suidfind() { ls -latg $path | grep '^...s' }
 
 # TODO: So, this is the third incarnation of this function!?
 #f5# Reload given functions
@@ -4091,16 +4018,6 @@ exirename() {
     fi
 }
 
-# open file in vim and jump to line
-# http://www.downgra.de/archives/2007/05/08/T19_21_11/
-j2v() {
-    emulate -L zsh
-    local -a params
-    params=(${*//(#m):[0-9]*:/\\n+${MATCH//:/}}) # replace ':23:' to '\n+23'
-    params=(${(s|\n|)${(j|\n|)params}}) # join array using '\n', then split on all '\n'
-    vim ${params}
-}
-
 # get_ic() - queries imap servers for capabilities; real simple. no imaps
 ic_get() {
     emulate -L zsh
@@ -4516,15 +4433,11 @@ if (( GRMLSMALL_SPECIFIC > 0 )) && isgrmlsmall ; then
     unset abk[V]
     unalias    'V'      &> /dev/null
     unfunction vman     &> /dev/null
-    unfunction vimpm    &> /dev/null
-    unfunction vimhelp  &> /dev/null
     unfunction viless   &> /dev/null
     unfunction 2html    &> /dev/null
 
     # manpages are not in grmlsmall
     unfunction manzsh   &> /dev/null
-    unalias    man2     &> /dev/null
-    unalias    man      &> /dev/null
     unfunction man2     &> /dev/null
 
 fi
@@ -4545,3 +4458,6 @@ zrclocal
 
 ## END OF FILE #################################################################
 # vim:filetype=zsh foldmethod=marker autoindent expandtab shiftwidth=4
+# Local variables:
+# mode: sh
+# End: