]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - zsh/rc
Merge commit 'rammstein/master'
[config/dotfiles.git] / zsh / rc
diff --git a/zsh/rc b/zsh/rc
index d101a3c22723da62d890215d1a61d86677873141..f24addea903d738ab9b7baf821bf26b138f97c8e 100644 (file)
--- a/zsh/rc
+++ b/zsh/rc
@@ -11,6 +11,9 @@ bindkey -v
 # Be paranoid, new files are readable/writable by me only.
 umask 077
 
+# Disable beeps.
+setopt nobeep
+
 # Prevent overwriting existing files with '> filename', use '>| filename'
 # (or >!) instead.
 setopt noclobber
@@ -44,7 +47,9 @@ fi
 fpath=(~/.zsh/functions $fpath)
 # Autoload my functions (except completion functions and hidden files). Thanks
 # to caphuso from the Zsh example files for this idea.
-autoload ${fpath[1]}/^_*(^/:t)
+if [[ -d ~/.zsh/functions ]]; then
+    autoload ${fpath[1]}/^_*(^/:t)
+fi
 
 # Simulate hooks using _functions arrays for Zsh versions older than 4.3.4. At
 # the moment only precmd() and preexec() are simulated.
@@ -75,8 +80,8 @@ autoload -Uz add-zsh-hook
 # HISTORY SETTINGS
 
 # Use history and store it in ~/.zsh/history.
-HISTSIZE=5000
-SAVEHIST=5000
+HISTSIZE=50000
+SAVEHIST=50000
 HISTFILE=~/.zsh/history
 # Append to the history file instead of overwriting it and do it immediately
 # when a command is executed.
@@ -150,8 +155,8 @@ if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) ||
     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 window's name to 'zsh'.
@@ -164,7 +169,7 @@ fi
 # 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. This
 # only works if the .zshrc on the server also uses this command.
-if [[ $TERM == screen* || $TERM == xterm* ]]; then
+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
@@ -195,7 +200,7 @@ if [[ $TERM == screen* || $TERM == xterm* ]]; then
         # 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
@@ -237,19 +242,27 @@ if [[ $TERM == screen* || $TERM == xterm* ]]; then
         [[ -z $window_reset ]] && return
 
         # Reset the window name to 'zsh'.
+        local name="zsh"
+        # If the function was called with an argument then reset the window
+        # name to '.zsh' (used by clear alias).
+        if [[ -n $1 ]]; then
+            name=".zsh"
+        fi
+
+        # Prepend prefixes like in window_preexec().
         if [[ -n $SSH_CONNECTION ]]; then
-            window_title "@zsh"
+            window_title "@$name"
         elif [[ -n $window_root ]]; then
-            window_title "!zsh"
+            window_title "!$name"
         else
-            window_title "zsh"
+            window_title $name
         fi
 
         # Just reset the name, so no screen reset necessary for the moment.
         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\\"
@@ -260,7 +273,7 @@ if [[ $TERM == screen* || $TERM == xterm* ]]; then
                 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
     }
@@ -327,9 +340,12 @@ zstyle ':completion:*:(hg|git)*:*' ignore-line yes
 # 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
@@ -349,6 +365,7 @@ alias -g L='E | less'
 alias -g D='E | colordiff L'
 alias -g G='| grep'
 alias -g S='| sort'
+alias -g U='| uniq'
 
 # Make going up directories simple.
 alias -g ...='../..'
@@ -356,6 +373,7 @@ alias -g ....='../../..'
 alias -g .....='../../../..'
 
 # Shortcuts for often used programs.
+alias c='clear'
 alias e='elinks'
 alias g='git'
 alias m='mutt'
@@ -388,6 +406,15 @@ function ll() {
     la -l $*
 }
 
+# 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_reset=yes; window_precmd reset'
+fi
+
 # I sometimes confuse editor and shell, print a warning to prevent I exit the
 # shell.
 alias :q='echo "This is not Vim!" >&2'