Added zsh configuration

This commit is contained in:
Tom Willemsen 2010-12-05 12:50:00 +01:00
parent deb52fd1bf
commit 2527e1a0d1
7 changed files with 147 additions and 0 deletions

View file

@ -24,3 +24,6 @@ linkmy emacs.d .emacs.d
# VIM # VIM
linkmy vimrc .vimrc linkmy vimrc .vimrc
linkmy vim .vim linkmy vim .vim
# ZSH
linkmy zshrc .zshrc
linkmy zsh .zsh

View file

@ -0,0 +1,2 @@
# -*- mode: shell-script -*-
update_current_git_vars

View file

@ -0,0 +1,6 @@
# -*- mode: shell-script -*-
if [ -n "$__EXECUTED_GIT_COMMAND" ]; then
update_current_git_vars
unset __EXECUTED_GIT_COMMAND
fi

View file

@ -0,0 +1,6 @@
# -*- mode: shell-script -*-
case "$1" in
git*)
__EXECUTED_GIT_COMMAND=1
;;
esac

23
zsh/functions/prompt_git_info Executable file
View file

@ -0,0 +1,23 @@
# -*- mode: shell-script -*-
if [ -n "$__CURRENT_GIT_BRANCH" ]; then
local s="("
s+="$__CURRENT_GIT_BRANCH"
case "$__CURRENT_GIT_BRANCH_STATUS" in
ahead)
s+="↑"
;;
diverged)
s+="↕"
;;
behind)
s+="↓"
;;
esac
if [ -n "$__CURRENT_GIT_BRANCH_IS_DIRTY" ]; then
s+="⚡"
fi
s+=")"
printf " %s%s" "%{${fg[yellow]}%}" $s
fi

View file

@ -0,0 +1,30 @@
# -*- mode: Shell-script -*-
unset __CURRENT_GIT_BRANCH
unset __CURRENT_GIT_BRANCH_STATUS
unset __CURRENT_GIT_BRANCH_IS_DIRTY
local st="$(git status 2>/dev/null)"
if [[ -n "$st" ]]; then
local -a arr
arr=(${(f)st})
if [[ $arr[1] =~ 'Not currently on any branch.' ]]; then
__CURRENT_GIT_BRANCH='no-branch'
else
__CURRENT_GIT_BRANCH="${arr[1][(w)4]}"
fi
if [[ $arr[2] =~ 'Your branch is' ]]; then
if [[ $arr[2] =~ 'ahead' ]]; then
__CURRENT_GIT_BRANCH_STATUS='ahead'
elif [[ $arr[2] =~ 'devirged' ]]; then
__CURRENT_GIT_BRANCH_STATUS='diverged'
else
__CURRENT_GIT_BRANCH_STATUS='behind'
fi
fi
if [[ ! $st =~ 'nothing to commit' ]]; then
__CURRENT_GIT_BRANCH_IS_DIRTY='1'
fi
fi

77
zshrc Normal file
View file

@ -0,0 +1,77 @@
# Setup variables
PATH="${PATH}:/usr/local/bin:${HOME}/bin"
export LESS_TERMCAP_mb=$'\e[1;37m'
export LESS_TERMCAP_md=$'\e[1;37m'
export LESS_TERMCAP_me=$'\e[0m'
export LESS_TERMCAP_se=$'\e[0m'
export LESS_TERMCAP_so=$'\e[1;47;30m'
export LESS_TERMCAP_ue=$'\e[0m'
export LESS_TERMCAP_us=$'\e[0;36m'
# Functions
function env() {
exec /usr/bin/env "$@" | grep -v ^LESS_TERMCAP_
}
# Initialize colors.
autoload -U colors
colors
# Allow for functions in the prompt
setopt PROMPT_SUBST
# Autoload zsh functions.
fpath=(~/.zsh/functions $fpath)
autoload -U ~/.zsh/functions/*(:t)
# Enable auto-execution of functions
typeset -ga preexec_functions
typeset -ga precmd_functions
typeset -ga chpwd_functions
# Append git functions needed for prompt.
preexec_functions+='preexec_update_git_vars'
precmd_functions+='precmd_update_git_vars'
chpwd_functions+='chpwd_update_git_vars'
# Set the prompt.
PROMPT='%{${fg[cyan]}%}%B%~%b%{${fg[default]}%} %(?.%{${fg[green]}%}O.%{${fg[red]}%}X)%{${fg[default]}%} %# '
RPROMPT='$(prompt_git_info)%{${fg[default]}%}'
# Aliases
alias alpine="alpine -p ""{imap.gmail.com/ssl/user=tom.willemsen@archlinux.us}remote_pinerc"""
alias evolus-pencil="/usr/lib/evolus-pencil-svn/evolus-pencil.sh"
alias grep="grep --color=always"
alias ls="ls -F --color=always"
# Set terminal name to current runnign application
case $TERM in
rxvt*)
precmd () { print -Pn "\e]0;urxvt - %~\a" }
preexec () { print -Pn "\e]0;urxvt - $1\a" }
;;
esac
# Set terminal keys
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
bindkey "\e[5~" beginning-of-history
bindkey "\e[6~" end-of-history
bindkey "\e[3~" delete-char
bindkey "\e[2~" quoted-insert
bindkey "\e[5C" forward-word
bindkey "\e0c" emacs-forward-word
bindkey "\e[5D" backward-word
bindkey "\e0d" emacs-backward-word
bindkey "\e\e[C" forward-word
bindkey "\e\e[D" backward-word
## for rxvt
bindkey "\e[8~" end-of-line
bindkey "\e[7~" beginning-of-line
## for non RH/Debian xterm, can't hurt for RH/Debian xterm
bindkey "\e0H" beginning-of-line
bindkey "\e0F" end-of-line
## for freebsd console
bindkey "\e[H" beginning-of-line
bindkey "\e[F" end-of-line