X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=zsh%2Frc;h=50291513fb67ca0aa7490dbfe22d82446354ebcd;hb=38194a6b33b36e2137c0ac95c1eaf0606e072d24;hp=9a413fade98d3c286731e336bac438d61720ca50;hpb=0b47efd8a633ce89b988f5cd39410b8cfe3c37ae;p=config%2Fdotfiles.git diff --git a/zsh/rc b/zsh/rc index 9a413fa..5029151 100644 --- a/zsh/rc +++ b/zsh/rc @@ -125,22 +125,28 @@ bindkey -a "^N" history-beginning-search-forward # Use colorized output, necessary for prompts and completions. autoload -U colors && colors +# Some shortcuts for colors. +local red="%{${fg[red]}%}" +local blue="%{${fg[blue]}%}" +local green="%{${fg[green]}%}" +local yellow="%{${fg[yellow]}%}" +local default="%{${fg[default]}%}" + # Set the default prompt. The current host and working directory is displayed, # the exit code of the last command if it wasn't 0, the number of running jobs # if not 0 and a + if this shell is running inside another shell. # The prompt is in green and blue to make easily detectable, the error exit # code in red and bold and the job count in yellow. -PROMPT="%{${fg[green]}%}%B%m%b%{${fg[default]}%}:\ -%{${fg[blue]}%}%B%~%b%{${fg[default]}%} \ -%(1j.%{${fg[yellow]}%}%j%{${fg[default]}%}.)%(2L.+.)%# \ -%(?..(%{${fg[red]}%}%B%?%b%{${fg[default]}%}%) )" +PROMPT="$green%B%m%b$default:$blue%B%~%b$default \ +%(1j.$yellow%j$default.)%# \ +%(?..($red%B%?%b$default%) )" -# VCS_Info was added in 4.3.9 but it works in earlier versions too. So load it +# vcs_info was added in 4.3.9 but it works in earlier versions too. So load it # if the necessary files are available in ~/.zsh/functions/vcs_info (often a # symbolic link to current checkout of Zsh's sources). if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) || -d ~/.zsh/functions/vcs_info ]]; then - # Update fpath to allow loading the VCS_Info functions. + # Update fpath to allow loading the vcs_info functions. if [[ -d ~/.zsh/functions/vcs_info ]]; then fpath=(~/.zsh/functions/vcs_info/ ~/.zsh/functions/vcs_info/Backends @@ -154,23 +160,43 @@ if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) || autoload -Uz vcs_info # Only look for git and mercurial repositories; the only I use. zstyle ':vcs_info:*' enable git hg - # Set style of vcs_info display. The current branch (green) and vcs (blue) + # 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 + + # 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) - # it's also displayed (red). - zstyle ':vcs_info:*' formats \ - "(%{${fg[green]}%}%b%{${fg[default]}%}:\ -%{${fg[blue]}%}%s%{${fg[default]}%})" - zstyle ':vcs_info:*' actionformats \ - "(%{${fg[green]}%}%b%{${fg[default]}%}/\ -%{${fg[red]}%}%a%{${fg[default]}%}:\ -%{${fg[blue]}%}%s%{${fg[default]}%})" + # it's also displayed (red). Also display if there are unstaged or staged + # (%u/%c) changes. + if [[ $ZSH_VERSION == (4.3.<11->|4.<4->*|<5->*) || + -d ~/.zsh/functions/vcs_info ]]; then + zstyle ':vcs_info:*' formats \ + "($green%b%u%c$default:$blue%s$default)" + zstyle ':vcs_info:*' actionformats \ + "($green%b%u%c$default/$red%a$default:$blue%s$default)" + else + # In older versions %u and %c are not defined yet and are not + # correctly expanded. + zstyle ':vcs_info:*' formats \ + "($green%b$default:$blue%s$default)" + zstyle ':vcs_info:*' actionformats \ + "($green%b$default/$red%a$default:$blue%s$default)" + fi + # Set style for formats/actionformats when unstaged (%u) and staged (%c) + # changes are detected in the repository; check-for-changes must be set to + # true for this to work. Thanks to Bart Trojanowski + # (http://jukie.net/~bart/blog/pimping-out-zsh-prompt) for the idea + # (2010-03-11 00:20). + zstyle ':vcs_info:*' unstagedstr '¹' + zstyle ':vcs_info:*' stagedstr '²' + # Call vcs_info as precmd before every prompt. prompt_precmd() { vcs_info } add-zsh-hook precmd prompt_precmd - # Display the vcs information in the right prompt. + # Display the VCS information in the right prompt. if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) ]]; then RPROMPT='${vcs_info_msg_0_}' # There is a bug in Zsh below 4.3.9 which displays a wrong symbol when @@ -181,6 +207,8 @@ if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) || fi fi +unset red blue green yellow default + # When screen, xterm or rxvt is used set the name of the window to the # currently running program. # @@ -424,25 +452,6 @@ tig() { } -# RUN COMMANDS - -# If not already in screen reattach to a running session or create a new one. -# -# 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 [[ -z $session ]]; then - screen - # Reattach to a running session. - else - screen -r $session - fi -fi - - # OS SPECIFIC SETTINGS if [[ $(uname) == Linux ]]; then @@ -471,9 +480,31 @@ elif [[ $(uname) == Darwin ]]; then # Mac OS X fi +# LOAD ADDITIONAL CONFIGURATION FILES + # Load rc file for current hostname (first part before a dot) or rc.local. source_config ~/.zsh host rc ${$(hostname)//.*/} + +# RUN COMMANDS + +# If not already in screen reattach to a running session or create a new one. +# +# 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 [[ -z $session ]]; then + screen + # Reattach to a running session. + else + screen -r $session + fi +fi + + source_debug "finished sourcing ~/.zsh/rc" # vim: ft=zsh