+add-zsh-hook preexec _gnu_screen_preexec
+
+function _dirinfo_precmd() {
+ local dirinfo="$(print_directory_info $(pwd))"
+
+ case $dirinfo in
+ "")
+ RPROMPT='%U%~%u';;
+ *)
+ RPROMPT="%U%~%u %U($dirinfo)%u";;
+ esac
+}
+add-zsh-hook precmd _dirinfo_precmd
+
+function print_directory_info() {
+ local absdir=$1
+
+ if [[ -r $absdir/.git ]] then
+ # Git
+ git branch --no-color 2>/dev/null \
+ | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
+
+ elif [[ -r $absdir/.hg/branch ]] then
+ # Hg
+ local hgbranch=`cat $absdir/.hg/branch`
+ if [[ -e $absdir/.hg/unpushed ]] then
+ echo "*${hgbranch}*"
+ else
+ echo "$hgbranch"
+ fi
+
+ elif [[ -d $absdir/_darcs ]] then
+ # Darcs
+ basename $absdir
+
+ elif [[ -r $absdir/CVS/Repository ]] then
+ # CVS
+ cat $absdir/CVS/Repository \
+ | sed -e 's!\([^/]*\).*!\1!'
+
+ else
+ # Unknown.
+ if [[ $absdir = "/" ]] then
+ # This is the root directory so exit from the recursion.
+ echo
+ else
+ # Recurse to the parent dir.
+ print_directory_info $(dirname $absdir)
+ fi
+ fi
+}
+
+function nfgrep() {
+ fgrep --with-filename --line-number --context=1 --colour=always "$@" | $PAGER
+}
+
+function ppgrep() {
+ local -a percol_opts
+
+ if [[ $# -gt 0 ]]; then
+ percol_opts=("--query" "$1")
+ fi
+
+ ps aux | percol "${percol_opts[@]}" | awk '{ print $2 }'
+}
+
+function ppkill() {
+ local -a ppgrep_opts
+
+ if [[ $1 =~ "^[^-]" ]]; then
+ ppgrep_opts=("$1")
+ shift
+ fi
+
+ ppgrep "${ppgrep_opts[@]}" | xargs kill "$@"
+}
+
+function find_tac_command() {
+ if which gtac >&/dev/null; then
+ echo "gtac"
+ elif which tac >&/dev/null; then
+ echo "tac"
+ else
+ echo "tail -r"
+ fi
+}