X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=zsh%2Frc;h=14388f03d116fd6d9adf5385d1112a5e5c851e44;hb=bbdb51e594058901a0f4a17fe2c936bba64ad4dc;hp=d10736edaacf5c6be9490e8ca3a364e0a8332946;hpb=211f5faa3895e4cc6fc2ea7d2ee739ae99468f5f;p=config%2Fdotfiles.git diff --git a/zsh/rc b/zsh/rc index d10736e..14388f0 100644 --- a/zsh/rc +++ b/zsh/rc @@ -509,10 +509,20 @@ setopt completeinword zstyle ':completion:::::' completer \ _expand _complete _prefix _ignored _approximate -# Try uppercase if the currently typed string doesn't match. This allows -# typing in lowercase most of the time and completion fixes the case. Don't -# perform these fixes in _approximate to prevent it from changing the input -# too much. Thanks to the book "From Bash to Z Shell" page 249. +# Match specification to be tried when completing items. Each group ('...') is +# tried after another if no matches were found, once matches are found no +# other groups are tried. Thanks to Mikachu in #zsh on Freenode (2012-08-28 +# 18:48 CEST) for explanations. +# +# When matching also include the uppercase variant of typed characters +# ('m:{a-z}={A-Z}'); using '' before this group would try the unmodified match +# first, but I prefer to get all matches immediately (e.g. if Makefile and +# makefile exist in the current directory echo m matches both, with '' it +# would only match makefile because it found one match). This allows typing in +# lowercase most of the time and completion fixes the case, which is faster. +# +# Don't perform these fixes in _approximate to prevent it from changing the +# input too much. Thanks to the book "From Bash to Z Shell" page 249. zstyle ':completion:*:(^approximate):*' matcher-list 'm:{a-z}={A-Z}' # Allow one mistake per three characters. Thanks to the book "From Bash to Z @@ -541,7 +551,7 @@ zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} # is no longer displayed. Display current position in percent (%p). zstyle ':completion:*:default' list-prompt '%p' # Display group name (%d) (like 'external command', 'alias', etc.), in bold. -# Also display a message if _approximate found errors and if no matches were +# Also display a message if _approximate found errors and no matches were # found. zstyle ':completion:*' format ' %B%d%b:' zstyle ':completion:*:corrections' format ' %B%d%b (errors: %e)' @@ -617,13 +627,13 @@ alias sudo='sudo ' # Global aliases for often used commands in the command line. alias -g E='2>&1' -alias -g L='E | less' -alias -g D='E | colordiff L' +alias -g L='2>&1 | less' +alias -g D='2>&1 | colordiff | less' alias -g G='| grep' -alias -g S='| sort' -alias -g U='| uniq' alias -g H='| head' +alias -g S='| sort' alias -g T='| tail' +alias -g U='| uniq' # Make going up directories simple. alias -g ...='../..' @@ -645,17 +655,17 @@ fi # 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 drizzd in #git # on Freenode (2010-04-03 17:55 CEST). -gitk() { +(( $+commands[gitk] )) && gitk() { command gitk --max-count=200 --branches --remotes --tags "$@" & disown %command } # Same for tig (except the disown part as it's no GUI program). -tig() { +(( $+commands[tig] )) && tig() { command tig --max-count=200 --branches --remotes --tags "$@" } # Pipe output through less. -tree() { +(( $+commands[tree] )) && tree() { command tree -C "$@" | less } @@ -699,26 +709,47 @@ fi # LOAD ADDITIONAL CONFIGURATION FILES +# Configuration option for rc.local to use tmux. By default screen is used. +use_tmux= + source_config ~/.zsh/rc.local # RUN COMMANDS -# If not already in screen reattach to a running session or create a new one. -# This also starts screen on a remote server when connecting through ssh. -if [[ $TERM != dumb && $TERM != linux && -z $STY ]]; then +# If not already in screen or tmux, reattach to a running session or create a +# new one. This also starts screen/tmux on a remote server when connecting +# through ssh. +if [[ $TERM != dumb && $TERM != linux && -z $STY && -z $TMUX ]]; then # Get running detached sessions. - session=$(screen -list | grep 'Detached' | awk '{ print $1; exit }') + if [[ -z $use_tmux ]]; then + session=$(screen -list | grep 'Detached' | awk '{ print $1; exit }') + else + session=$(tmux list-sessions 2>/dev/null \ + | sed '/(attached)$/ d; s/^\([0-9]\{1,\}\).*$/\1/; q') + fi # As we exec later we have to set the title here. - window_preexec "screen" + if [[ -z $use_tmux ]]; then + window_preexec "screen" + else + window_preexec "tmux" + fi # Create a new session if none is running. if [[ -z $session ]]; then - exec screen + if [[ -z $use_tmux ]]; then + exec screen + else + exec tmux + fi # Reattach to a running session. else - exec screen -r $session + if [[ -z $use_tmux ]]; then + exec screen -r $session + else + exec tmux attach-session -t $session + fi fi fi @@ -730,7 +761,7 @@ fi # 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 screen (see above). +# when starting screen/tmux (see above). exec 2>>(while read -r -k -u 0 line; do printf '\e[91m%s\e[0m' "$line"; print -n $'\0';