Added zsh configuration
This commit is contained in:
parent
deb52fd1bf
commit
2527e1a0d1
7 changed files with 147 additions and 0 deletions
|
@ -24,3 +24,6 @@ linkmy emacs.d .emacs.d
|
|||
# VIM
|
||||
linkmy vimrc .vimrc
|
||||
linkmy vim .vim
|
||||
# ZSH
|
||||
linkmy zshrc .zshrc
|
||||
linkmy zsh .zsh
|
||||
|
|
2
zsh/functions/chpwd_update_git_vars
Executable file
2
zsh/functions/chpwd_update_git_vars
Executable file
|
@ -0,0 +1,2 @@
|
|||
# -*- mode: shell-script -*-
|
||||
update_current_git_vars
|
6
zsh/functions/precmd_update_git_vars
Executable file
6
zsh/functions/precmd_update_git_vars
Executable file
|
@ -0,0 +1,6 @@
|
|||
# -*- mode: shell-script -*-
|
||||
|
||||
if [ -n "$__EXECUTED_GIT_COMMAND" ]; then
|
||||
update_current_git_vars
|
||||
unset __EXECUTED_GIT_COMMAND
|
||||
fi
|
6
zsh/functions/preexec_update_git_vars
Executable file
6
zsh/functions/preexec_update_git_vars
Executable 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
23
zsh/functions/prompt_git_info
Executable 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
|
30
zsh/functions/update_current_git_vars
Executable file
30
zsh/functions/update_current_git_vars
Executable 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
77
zshrc
Normal 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
|
Loading…
Reference in a new issue