# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
# Released under the terms of the Artistic Licence 2.0
#
-# Source repository: http://git.madduck.net/v/etc/zsh.git
+# Source repository: git://git.madduck.net/etc/zsh.git
#
+function trace() { eval "set -x; $@" }
+
alias mv='nocorrect mv'
alias cp='nocorrect cp'
alias ln='nocorrect ln'
alias apt-cache='noglob apt-cache'
alias locate='noglob locate'
-_LS_OPTS='-bCF --color=auto'
-ls --group-directories-first >/dev/null 2>&1 \
- && _LS_OPTS="$_LS_OPTS --group-directories-first"
+local _USER_AGENT="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080404 Iceweasel/2.0.0.14 (Debian-2.0.0.14-2)"
+alias swget="noglob wget --user-agent='$USER_AGENT'"
+
+typeset -a _ls_opts; _ls_opts=(-bC --color=auto)
+command ls --group-directories-first >/dev/null 2>&1 \
+ && _ls_opts+=--group-directories-first
# I prefer POSIX collation for ls
-alias ls="LC_COLLATE=POSIX ls $_LS_OPTS"
-unset _LS_OPTS
+alias ls="LC_COLLATE=POSIX ls $_ls_opts"
+alias l='ls --time-style=+%Y%m%d.%H%M -gG'
alias ll='ls -l'
alias la='ls -a'
alias lla='ls -la'
+alias lt='ls -lt'
+alias lrt='ls -lrt'
+alias lat='ls -lat'
+alias lart='ls -lart'
# List only directories and symbolic links that point to directories
-alias lsd='ls -ld *(-/DN)'
+alias lsd='ll -d *(-/DN)'
+
+alias lscontext=ls
+cd () { __CHPWD_RUN_FIRST=lscontext && builtin cd "$@" && unset __CHPWD_RUN_FIRST }
+#_cd_l() { ll }
+#chpwd_functions+=_cd_l
-alias lsbig="ls -flh *(.OL[1,10])"
-alias lssmall="ls -Srl *(.oL[1,10])"
-alias lsnew="ls -rl *(D.om[1,10])"
-alias lsold="ls -rtlh *(D.om[1,10])"
+# #183394
+alias w='w|cat'
+
+alias -g ND='*(/om[1])' # newest directory
+alias -g NF='*(.om[1])' # newest file
alias egrep='egrep --color=auto -d skip'
alias fgrep='fgrep --color=auto -d skip'
alias mbug='bts show --mbox'
alias bug='BROWSER=www-browser bts show'
-# 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'
-
-if whence tailf >/dev/null; then
+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
-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'
+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/:)@}"
+}
alias px='ps afux'
alias mps='ps -ao user,pcpu,start,command'
+function of() { lsof -np "$1" }
+compdef _pids of
+
+function psgrep() { ps aux | grep "[${1[1]}]${1[2,-1]}" }
+
+alias rw-='chmod 600'
+alias rwx='chmod 700'
+alias r--='chmod 644'
+alias r-x='chmod 755'
+alias r-s='chmod 2755'
+alias rws='chmod 2775'
+
alias bofh='fortune bofh-excuses'
autoload -U baseconv
alias d2h='baseconv 10 16'
alias h2d='baseconv 16 10'
alias d2o='baseconv 10 8'
-alias o2d='baseconv 8 10'
-
-alias sshnew='ssh -o "StrictHostKeyChecking no"'
-alias scpnew='scp -o "StrictHostKeyChecking no"'
-alias sshtmp='sshnew -o "UserKnownHostsFile /dev/null"'
-alias scptmp='scpnew -o "UserKnownHostsFile /dev/null"'
+alias d2o='baseconv 10 8'
+alias h2b='baseconv 16 2'
+alias b2h='baseconv 2 16'
alias sendmail=/usr/sbin/sendmail
_LANGUAGES[es]=spa
_LANGUAGES[fr]=fra
_LANGUAGES[it]=ita
-_LANGUAGES[lt]=lat
+_LANGUAGES[tn]=lat
for l0 in ${(k)_LANGUAGES}; do
for l1 in ${(k)_LANGUAGES}; do
- eval "_${l0}-${l1}() { _d -d fd-${_LANGUAGES[$l0]}-${_LANGUAGES[$l1]} \$* }"
- eval "${l0}-${l1}() { d -d fd-${_LANGUAGES[$l0]}-${_LANGUAGES[$l1]} \$* }"
+ eval "function _${l0}-${l1}() { _d -d fd-${_LANGUAGES[$l0]}-${_LANGUAGES[$l1]} \$* }"
+ eval "function ${l0}-${l1}() { d -d fd-${_LANGUAGES[$l0]}-${_LANGUAGES[$l1]} \$* }"
done
done
unset '_LANGUAGES[en]'
for l in ${(k)_LANGUAGES}; do
- eval "${l}() { (_${l}-en \$*; _en-${l} \$*) | more }"
+ eval "function ${l}() { (_${l}-en \$*; _en-${l} \$*) | more }"
done
unset _LANGUAGES
+alias dpkg-buildpackage="dpkg-buildpackage -k$DEBKEYID -rfakeroot"
+
+bugsub() { echo X-debbugs-autosubscribe: madduck | sendmail -f $DEBEMAIL ${1:?No bug number}-subscribe@bugs.debian.org }
+bugunsub() { sendmail -f $DEBEMAIL ${1:?No bug number}-unsubscribe@bugs.debian.org </dev/null }
+ptssub() { echo subscribe ${1:?E: no package name given.} | sendmail -f ${2:-$DEBEMAIL} pts@qa.debian.org }
+ptsunsub() { echo unsubscribe ${1:?E: no package name given.} | sendmail -f ${2:-$DEBEMAIL} pts@qa.debian.org }
+qasub() { echo subscribe ${1:?E: no package name given.} ${2:-unspecifed} | sendmail -f $DEBEMAIL ddpo@qa.debian.org }
+qaunsub() { echo unsubscribe ${1:?E: no package name given.} ${2:-unspecifed} | sendmail -f $DEBEMAIL ddpo@qa.debian.org }
+listsub() { echo Subject: subscribe | sendmail -f ${1%@*}=${1#*@}@mass.madduck.net ${1%@*}-request@${1#*@} }
+listunsub() { echo Subject: unsubscribe | sendmail -f ${1%@*}=${1#*@}@mass.madduck.net ${1%@*}-request@${1#*@} }
+
+uc() { unicode --max=0 --colour=off "$@" | sensible-pager }
+
+alias ipr='ip r'
+alias ipa='ip a'
+alias ipl='ip l'
+
+alias btd='btdownloadheadless'
+
+function asc () { autossh -t "$@" 'screen -qxp= || screen -qdRR' }
+compdef asc=ssh
+
+alias mdtest='swaks -s localhost -t'
+
+if whence devtodo >/dev/null; then
+ _devtodo_on_chpwd() {
+ local out; out="$(devtodo)"
+ [[ -n $out ]] && print "todo:\n$out"
+ }
+ [[ -z ${(M)chpwd_functions:#_devtodo_on_chpwd} ]] && chpwd_functions+=_devtodo_on_chpwd
+fi
+
+pdfextract() {
+ local i=$1
+ local o=$2
+ shift 2
+ pdftk "$i" cat "${@:-1-end}" output "${o%.pdf}.pdf"
+}
+compdef _files pdfextract
+
+gittestfile() {
+ local annex; annex=false
+ local file
+
+ case "$1" in
+ (-a) annex=true;;
+ (*)
+ if [ -n "$file" ]; then
+ echo >&2 "E: filename already given"
+ return 1
+ fi
+ file="$1";;
+ esac
+
+ if [ -z "$file" ]; then
+ file=$(TMPDIR=${PWD} tempfile -ptest. -s.txt)
+ fi
+
+ echo "Test file created $(date)" >| $file
+
+ case "$annex" in
+ true)
+ git annex add $file
+ git commit -m"Add test file $file to annex"
+ ;;
+ false)
+ git add $file
+ git commit -m"Add test file $file"
+ ;;
+ esac
+}
+
# vim:ft=zsh