fi
fi
-# When screen or xterm is used set the name of the window to the currently
-# running program.
+# When screen, 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 windows' name to 'zsh'.
+# stops precmd() resets the window's name to 'zsh'.
#
# It works with screen and xterm. If screen is running in X11 (DISPLAY is set)
-# and stumpwm is used (it's tested if stumpish is available) then the window
-# title is also set in stumpwm using stumpish.
+# and stumpwm is running then the window title is also set in stumpwm using
+# stumpish.
#
# 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 [[ $TERM == screen* || $TERM == xterm* ]]; then
- # Set to a non empty value to reset the window name in the next precmd()
- # call.
+# running on a different computer with ssh a @ is added at the beginning. This
+# only works if the .zshrc on the server also uses this command.
+if [[ $TERM == screen* || $TERM == xterm* || $TERM == rxvt* ]]; then
+ # Is set to a non empty value to reset the window name in the next
+ # precmd() call.
window_reset=yes
- # Set to a non empty value when the stump window manager is available.
- which stumpwm &> /dev/null
+ # Is set to a non empty value when the stump window manager is running.
+ ps aux | grep -q stumpwm | grep -v grep
if [[ $? -eq 0 ]]; then
window_stumpwm=yes
fi
- # Set to a non empty value when the shell is running as root.
+ # Is set to a non empty value when the shell is running as root.
if [[ $(id -u) -eq 0 ]]; then
window_root=yes
fi
# Ignore often used commands which are only running for a very short
# time. This prevents a "blinking" name when it's changed to "cd" for
# example and then some milliseconds later back to "zsh".
- [[ $program_name == (cd*|ls|la|ll|clear) ]] && return
+ [[ $program_name == (cd*|ls|la|ll|clear|c) ]] && return
# Change my shortcuts so the real name of the program is displayed.
case $program_name in
program_name=!$program_name
fi
- # Add an at mark at the beginning if running ssh on a different
- # computer.
+ # Add an at mark at the beginning if running through ssh on a
+ # different computer.
if [[ -n $SSH_CONNECTION ]]; then
program_name="@$program_name"
fi
window_reset=
}
- # Sets the window title. Works with screen and xterm.
+ # Sets the window title. Works with screen, xterm and rxvt.
window_title() {
if [[ $TERM == screen* ]]; then
print -n "\ek$1\e\\"
echo "$1" | stumpish -e "title" > /dev/null
fi
- elif [[ $TERM == xterm* ]]; then
+ elif [[ $TERM == xterm* || $TERM == rxvt* ]]; then
print -n "\e]2;$1\e\\"
fi
}
# easily retrieved later and then abort like ^C normally does. This is useful
# when I want to abort an command to do something in between and then finish
# typing the command.
+#
+# Thanks to Vadim Zeitlin <vz-zsh@zeitlins.org> for a fix (--) so lines
+# starting with - don't cause errors.
TRAPINT() {
# Store the current buffer in the history.
- zle && print -s $BUFFER
+ zle && print -s -- $BUFFER
# Return the default exit code so zsh aborts the current command.
return $1
alias -g .....='../../../..'
# Shortcuts for often used programs.
+alias c='clear'
alias e='elinks'
alias g='git'
alias m='mutt'
la -l $*
}
-# Multiple files given to Vim are opened in tabs, supported since Vim 7.
-if [[ ${${${(f)"$(vim --version)"}[1]#VIM - Vi IMproved }%% *} == 7* ]]; then
- alias vim='vim -p'
+# If the window naming feature is used (see above) then use ".zsh" (leading
+# dot) as title name after running clear so it's clear to me that the window
+# is empty. I open so much windows that I don't know in which I have something
+# important. This helps me to remember which windows are empty (I run clear
+# after I finished my work in a window).
+if [[ -n $window_reset ]]; then
+ alias clear='clear; window_title .zsh'
fi
# I sometimes confuse editor and shell, print a warning to prevent I exit the
# patches can easily be opened.
alias vqs='vim -c "cd $(hg root)/.hg/patches/" "$(hg root)/.hg/patches/series"'
+# Display all branches (except stash) in gitk but only 200 commits as this is
+# much faster. Also put in the background and disown. Thanks to sitaram in
+# #git on Freenode (2009-04-20 15:51).
+gitk() {
+ command gitk \
+ --max-count=200 \
+ $(git rev-parse --symbolic-full-name --remotes --branches) \
+ $@ &
+ disown %command
+}
+# Same for tig (except the disown part as it's no GUI program).
+tig() {
+ command tig \
+ --max-count=200 \
+ $(git rev-parse --symbolic-full-name --remotes --branches) \
+ $@
+}
+
# RUN COMMANDS
# screen* is necessary as `screen` uses screen.linux for example for a linux
# console which would otherwise cause an infinite loop.
if [[ $TERM != screen* && $TERM != 'dumb' ]]; then
+ # Get running detached sessions.
+ session=$(screen -list | grep 'Detached' | awk '{ print $1; exit }')
# Create a new session if none is running.
- if [[ $(screen -list | grep "Detached" | wc -l) == 0 ]]; then
+ if [[ -z $session ]]; then
screen
# Reattach to a running session.
else
- screen -r
+ screen -r $session
fi
fi