# Zsh configuration file.
+# Copyright (C) 2011-2012 Simon Ruderich
+#
+# This file is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this file. If not, see <http://www.gnu.org/licenses/>.
+
source_debug ". ~/.zsh/rc"
# arrays.
function precmd() {
for function in $precmd_functions; do
- $function $@
+ $function "$@"
done
}
function preexec() {
for function in $preexec_functions; do
- $function $@
+ $function "$@"
done
}
function chpwd() {
for function in $chpwd_functions; do
- $function $@
+ $function "$@"
done
}
fi
add-zsh-hook precmd prompt_precmd
-# When screen, xterm or rxvt is used set the name of the window to the
+# When screen, tmux, xterm or rxvt is used set the name of the window to the
# currently running program.
#
# When a program is started preexec() sets the window's name to it; when it
# stops precmd() resets the window's name to 'zsh'. 'fg' is supported and sets
# the window's name to the resumed job.
#
-# It works with screen, xterm and rxvt.
+# It works with screen, tmux, xterm and rxvt.
#
# If a command is run with sudo or if the shell is running as root then a ! is
# added at the beginning of the command to make this clear. If a command is
# running on a different computer with ssh a @ is added at the beginning. If
-# screen is running on the remote machine instead of @screen @:hostname
-# (hostname replaced by the machine's hostname) is displayed. This only works
-# if the .zshrc on the server also uses this command.
+# screen/tmux is running on the remote machine instead of @screen @:hostname
+# (or @tmux ..; hostname replaced by the machine's hostname) is displayed.
+# This only works if the .zshrc on the server also uses this command.
#
# screen* is necessary as `screen` uses screen.linux for example for a linux
# console.
# If screen is running in SSH then display "@:hostname" as title
# in the term/outer screen.
- if [[ $program_name == @screen ]]; then
+ if [[ $program_name == @screen || $program_name == @tmux ]]; then
program_name="@:${HOST//.*/}"
# Use "@:!hostname" for root screens.
- elif [[ $program_name == @!screen ]]; then
+ elif [[ $program_name == @!screen || $program_name == @!tmux ]]; then
program_name="@:!${HOST//.*/}"
fi
fi
window_reset=
}
- # Sets the window title. Works with screen, xterm and rxvt. (V) escapes
- # all non-printable characters. Thanks to Mikachu in #zsh on Freenode
- # (2010-08-07 17:09 CEST).
+ # Sets the window title. Works with screen, tmux (which uses screen as
+ # TERM), xterm and rxvt. (V) escapes all non-printable characters. Thanks
+ # to Mikachu in #zsh on Freenode (2010-08-07 17:09 CEST).
if [[ $TERM == screen* ]]; then
window_title() {
print -n "\ek${(V)1}\e\\"
command tree -C "$@" | less
}
-# Automatically disown.
-xpdf() {
- command xpdf "$@" &
- disown %command
-}
+# Choose the "best" PDF viewer available: zathura, then xpdf. Also setup
+# completion for `pdf`.
+if (( $+commands[zathura] )); then
+ pdf() {
+ command zathura "$@" 2>/dev/null &
+ disown %command
+ }
+ # No completion for zathura yet.
+ compdef _xpdf pdf
+elif (( $+commands[xpdf] )); then
+ pdf() {
+ command xpdf "$@" 2>/dev/null &
+ disown %command
+ }
+ compdef _xpdf pdf
+fi
# GHCI doesn't use readline, force it if rlwrap is available.
(( $+commands[rlwrap] )) && ghci() {