]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - zsh/rc
zsh/rc: Use ghci with rlwrap if available.
[config/dotfiles.git] / zsh / rc
diff --git a/zsh/rc b/zsh/rc
index 236374b737ade57f984da916567ccf905332398b..84b27f73a35887173f0a1df7131970f88f47dfbc 100644 (file)
--- a/zsh/rc
+++ b/zsh/rc
@@ -112,6 +112,8 @@ setopt appendhistory
 setopt incappendhistory
 # If the same command is run multiple times store it only once in the history.
 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
@@ -184,7 +186,7 @@ if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) ||
     zstyle ':vcs_info:*' enable git hg
     # Check the repository for changes so they can be used in %u/%c (see
     # below). This comes with a speed penalty for bigger repositories.
-    zstyle ':vcs_info:*' check-for-changes true
+    zstyle ':vcs_info:*' check-for-changes yes
 
     # Set style of vcs_info display. The current branch (green) and VCS (blue)
     # is displayed. If there is an special action going on (merge, rebase)
@@ -315,7 +317,8 @@ add-zsh-hook precmd prompt_precmd
 # 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'.
+# 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.
 #
@@ -348,6 +351,14 @@ if [[ $TERM == screen* || $TERM == xterm* || $TERM == rxvt* ]]; then
             program_name=${program_name#sudo }
             program_sudo=yes
         fi
+
+        # Replace fg with the resumed job name.
+        if [[ $program_name == fg ]]; then
+            program_name=${jobtexts[%+]}
+        elif [[ $program_name == fg* ]]; then
+            program_name=${jobtexts[${program_name#fg }]}
+        fi
+
         # Remove all arguments from the program name.
         program_name=${program_name%% *}
 
@@ -463,7 +474,7 @@ zmodload zsh/complist
 autoload -Uz compinit && compinit -d ~/.zsh/cache/zcompdump
 
 # Use cache to speed up some slow completions (dpkg, perl modules, etc.).
-zstyle ':completion:*' use-cache on
+zstyle ':completion:*' use-cache yes
 zstyle ':completion:*' cache-path ~/.zsh/cache
 
 # Let the completion system handle all completions, including expanding of
@@ -613,22 +624,19 @@ if [[ -n $window_reset ]]; then
     alias clear='clear; window_reset=yes; window_precmd reset'
 fi
 
+
+# CUSTOM COMMANDS
+
 # 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).
+# much faster. Also put in the background and disown. Thanks to drizzd in #git
+# on Freenode (2010-04-03 17:55 CEST).
 gitk() {
-    command gitk \
-        --max-count=200 \
-        $(git rev-parse --symbolic-full-name --remotes --branches) \
-        $@ &
+    command gitk --max-count=200 --branches --remotes --tags "$@" &
     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) \
-        $@
+    command tig --max-count=200 --branches --remotes --tags "$@"
 }
 
 # Pipe output through less.
@@ -642,6 +650,15 @@ xpdf() {
     disown %command
 }
 
+# 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
+}
+
 
 # OS SPECIFIC SETTINGS