]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - zsh/rc
zsh/rc: check for isearch keymap
[config/dotfiles.git] / zsh / rc
diff --git a/zsh/rc b/zsh/rc
index 4cd696785c37fc1f05edce10e59303bef7a61be2..908896121d042ad4f7123c04a9367b7a9c48ae1a 100644 (file)
--- a/zsh/rc
+++ b/zsh/rc
@@ -50,10 +50,11 @@ zshrc_resolve_fg_to_resumed_job_name() {
 
 # MISCELLANEOUS SETTINGS
 
-# Be paranoid, new files are readable/writable by me only, but not as root.
-if [[ $UID -ne 0 ]]; then
-    umask 077
-fi
+# Prevent warnings.
+typeset -g TMOUT
+# Load general shell setup commands. NOTE: Expand this when publishing the
+# config.
+source_config ~/.shell/rc
 
 # Disable beeps.
 setopt nobeep
@@ -152,6 +153,7 @@ setopt incappendhistory
 setopt histignoredups
 # Don't add lines starting with a space to the history.
 setopt histignorespace
+
 # Vim like completions of previous executed commands (also enter Vi-mode). If
 # called at the beginning it just recalls old commands (like cursor up), if
 # called after typing something, only lines starting with the typed text are
@@ -180,6 +182,16 @@ bindkey -a '^P' history-beginning-search-backward # binding for Vi-mode
 # after calling ^P.
 bindkey -a '^N' history-beginning-search-forward
 
+# Enable incremental search which is especially useful when the string is an
+# argument and not the command.
+bindkey '^R' history-incremental-search-backward
+# Also enable my usual use of Ctrl-P/Ctrl-N to get the previous/next matching
+# history entry.
+if [[ $ZSH_VERSION == (4.<4->*|<5->*) ]]; then
+    bindkey -M isearch '^P' history-incremental-search-backward
+    bindkey -M isearch '^N' history-incremental-search-forward
+fi
+
 # Automatically push cd-ed directories on the directory stack.
 setopt autopushd
 # Don't push duplicates on the directory stack.
@@ -563,7 +575,7 @@ if [[ $TERM == screen* || $TERM == xterm* || $TERM == rxvt* ]]; then
             name=.zsh
         fi
 
-        # Prepend prefixes like in window_preexec().
+        # Prepend prefixes like in zshrc_window_preexec().
         if [[ $UID -eq 0 ]]; then
             name="!$name"
         fi
@@ -825,13 +837,9 @@ elif (( $+commands[zathura] )); then
     compdef _xpdf pdf
 fi
 
-# GHCI doesn't use readline, force it if rlwrap is available.
-(( $+commands[rlwrap] )) && ghci() {
-    command rlwrap \
-        --always-readline --complete-filenames -t dumb \
-        --histsize 5000 \
-        --file ~/.shell/rlwrap/ghci \
-        ghci "$@" 2>&1
+# Better viewer for info pages .. just pipe everything into less.
+info() {
+    command info "$@" 2>/dev/null | less
 }
 
 
@@ -846,9 +854,13 @@ fi
 
 # LOAD ADDITIONAL CONFIGURATION FILES
 
-# Configuration option for rc.local to use GNU screen/tmux. By default GNU
-# screen is used. Possible values: screen, tmux and empty (no value).
+# Configuration options for rc.local.
+
+# Multiplexer to use. By default GNU screen is used. Possible values: screen,
+# tmux and empty (no multiplexer).
 zshrc_use_multiplexer=screen
+# Additional arguments for fortune.
+zshrc_fortune_arguments=()
 
 source_config ~/.zsh/rc.local
 
@@ -900,19 +912,32 @@ if [[ $TERM != dumb && $TERM != linux && -z $STY && -z $TMUX ]]; then
     fi
 fi
 
-# Colorize stderr in red. Very useful when looking for errors. Thanks to
-# http://gentoo-wiki.com/wiki/Zsh for the basic script and Mikachu in #zsh on
-# Freenode (2010-03-07 04:03 CET) for some improvements (-r, printf). It's not
-# yet perfect and doesn't work with su and git for example, but it can handle
-# most interactive output quite well (even with no trailing new line) and in
-# cases it doesn't work, the E alias can be used as workaround.
-#
-# Moved in the "run commands" section to prevent one unnecessary zsh process
-# when starting GNU screen/tmux (see above).
-exec 2>>(while read -r -k -u 0 line; do
-    printf '\e[91m%s\e[0m' "$line"
-    print -n $'\0'
-done &)
+# Colorize stderr in bold red. Very useful when looking for errors.
+if [[ $LD_PRELOAD != *libcoloredstderr.so* ]]; then
+    # coloredstderr found, use it.
+    if [[ -f ~/.zsh/libcoloredstderr.so ]]; then
+        export LD_PRELOAD="$HOME/.zsh/libcoloredstderr.so:$LD_PRELOAD"
+        export COLORED_STDERR_FDS=2,
+        export COLORED_STDERR_PRE=$'\033[91m' # bright red
+        export COLORED_STDERR_IGNORED_BINARIES=/usr/bin/tset
+    # Use the fallback solution.
+    #
+    # Thanks to http://gentoo-wiki.com/wiki/Zsh for the basic script and
+    # Mikachu in #zsh on Freenode (2010-03-07 04:03 CET) for some improvements
+    # (-r, printf). It's not yet perfect and doesn't work with su and git for
+    # example, but it can handle most interactive output quite well (even with
+    # no trailing new line) and in cases it doesn't work, the E alias can be
+    # used as workaround.
+    #
+    # Moved in the "run commands" section to prevent one unnecessary zsh
+    # process when starting GNU screen/tmux (see above).
+    else
+        exec 2>>(while read -r -k -u 0 line; do
+            printf '\e[91m%s\e[0m' "$line"
+            print -n $'\0'
+        done &)
+    fi
+fi
 
 # Display possible log messages from ~/.xinitrc (if `xmessage` wasn't
 # installed). No race condition as xinitrc has finished before a shell is
@@ -929,7 +954,7 @@ fi
 PERIOD=14400
 periodic() {
     # Display fortunes.
-    (( $+commands[fortune] )) && fortune -ac
+    (( $+commands[fortune] )) && fortune -ac "${zshrc_fortune_arguments[@]}"
     # Display reminders.
     (( $+commands[rem] )) && [[ -f ~/.reminders ]] && rem -h
 }