-# handy documentation lookup on Debian
-# from http://www.michael-prokop.at/computer/config/.zshrc
-doc() { cd /usr/share/doc/$1 && ls }
-_doc() { _files -W /usr/share/doc -/ }
-compdef _doc doc
-
-alias giti='git init && git add . && git commit -minitial\ checkin'
-
-alias t=tailf
-alias tsl='t /var/log/syslog'
-alias tml='t /var/log/mail.log'
-alias tal='t /var/log/auth.log'
-alias tdl='t /var/log/daemon.log'
-alias tkl='t /var/log/kern.log'
+edalias() {
+ [[ -z "$1" ]] && { echo "Usage: edalias <alias_to_edit>" ; return 1 } || vared aliases'[$1]' ;
+}
+compdef _aliases edalias
+
+edfunc() {
+ [[ -z "$1" ]] && { echo "Usage: edfunc <function_to_edit>" ; return 1 } || zed -f "$1" ;
+}
+compdef _functions edfunc
+
+doc() { cd /usr/share/doc/$1 }
+compdef '_files -W /usr/share/doc -/' doc
+
+alias giti='git init && git add . && git commit -minitial\ checkin && git tag orig'
+gbs() {
+ local branch; branch="$(git symbolic-ref -q HEAD)"; branch="${branch##*/}"
+ git config branch.${branch}.remote ${1:-origin}
+ git config branch.${branch}.merge refs/heads/${branch}
+ git config branch.${branch}.rebase true
+}
+
+if whence mtail >/dev/null; then
+ alias t=mtail
+elif whence tailf >/dev/null; then
+ alias t=tailf
+else
+ alias t='tail -f'
+fi
+compdef _files t
+
+function ltail() { t ~log/$1 }
+compdef '_files -W ~log' ltail
+
+function lless() { sensible-pager ~log/$1 }
+compdef '_files -W ~log' lless
+
+alias tsl='ltail syslog'
+alias lsl='lless syslog'
+alias tml='ltail mail.log'
+alias lml='lless mail.log'
+alias tal='ltail auth.log'
+alias lal='lless auth.log'
+alias tdl='ltail daemon.log'
+alias ldl='lless daemon.log'
+alias tkl='ltail kern.log'
+alias lkl='lless kern.log'
+
+function lgrep() {
+ local pattern="$1"; shift
+ eval egrep "'$pattern'" "~log/${(j: ~log/:)@}"
+}