From 41dca31756298ef9803172e6e982e554665258f9 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Fri, 9 Nov 2012 10:44:45 +0100 Subject: Move ZSH configs --- .config/zsh/.gitignore | 1 + .config/zsh/.zprofile | 12 ++++ .config/zsh/.zshrc | 99 +++++++++++++++++++++++++++ .config/zsh/functions/chpwd_show_todo | 7 ++ .config/zsh/functions/chpwd_update_git_vars | 2 + .config/zsh/functions/env | 3 + .config/zsh/functions/get_cnt | 15 ++++ .config/zsh/functions/line | 8 +++ .config/zsh/functions/precmd_update_git_vars | 6 ++ .config/zsh/functions/precmd_update_updates | 11 +++ .config/zsh/functions/preexec_update_vars | 13 ++++ .config/zsh/functions/prompt | 15 ++++ .config/zsh/functions/prompt_git_info | 23 +++++++ .config/zsh/functions/rprompt | 4 ++ .config/zsh/functions/update_current_git_vars | 30 ++++++++ .config/zsh/functions/welcome | 10 +++ 16 files changed, 259 insertions(+) create mode 100644 .config/zsh/.gitignore create mode 100644 .config/zsh/.zprofile create mode 100644 .config/zsh/.zshrc create mode 100644 .config/zsh/functions/chpwd_show_todo create mode 100755 .config/zsh/functions/chpwd_update_git_vars create mode 100644 .config/zsh/functions/env create mode 100644 .config/zsh/functions/get_cnt create mode 100644 .config/zsh/functions/line create mode 100755 .config/zsh/functions/precmd_update_git_vars create mode 100644 .config/zsh/functions/precmd_update_updates create mode 100644 .config/zsh/functions/preexec_update_vars create mode 100644 .config/zsh/functions/prompt create mode 100755 .config/zsh/functions/prompt_git_info create mode 100644 .config/zsh/functions/rprompt create mode 100755 .config/zsh/functions/update_current_git_vars create mode 100644 .config/zsh/functions/welcome (limited to '.config') diff --git a/.config/zsh/.gitignore b/.config/zsh/.gitignore new file mode 100644 index 0000000..b9fd690 --- /dev/null +++ b/.config/zsh/.gitignore @@ -0,0 +1 @@ +histfile diff --git a/.config/zsh/.zprofile b/.config/zsh/.zprofile new file mode 100644 index 0000000..631e8a0 --- /dev/null +++ b/.config/zsh/.zprofile @@ -0,0 +1,12 @@ +export BROWSER=conkeror +export EDITOR="emacsclient -c -a emacs" +export INFOPATH="${HOME}/documents/info:/usr/local/emacs/share/info:/usr/share/info:/usr/local/stumpwm/share/info" + +PATH="${HOME}/usr/bin:${PATH}:/usr/local/bin:/usr/local/stumpwm/bin" +PATH="/usr/local/scwm/bin:$PATH" +PATH="/usr/local/clfswm/bin:$PATH" +export PATH="/usr/local/emacs/bin:$PATH" + +if [ -z "$SSH_AGENT_PID" ]; then + eval `ssh-agent` +fi diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc new file mode 100644 index 0000000..564f395 --- /dev/null +++ b/.config/zsh/.zshrc @@ -0,0 +1,99 @@ +# -*- Mode: shell-script; -*- +# Setup variables +HISTFILE=$ZDOTDIR/histfile +HISTSIZE=1000 +SAVEHIST=1000 +LESSCMD="/usr/bin/less -FXRS" + +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' +export PAGER=$LESSCMD + +# 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 less=$LESSCMD +alias ls="ls -F --color=always" +alias mysql="mysql --pager" +alias reboot="systemctl reboot" +alias poweroff="systemctl poweroff" + +setopt notify +# Allow for functions in the prompt +setopt PROMPT_SUBST +setopt EXTENDED_GLOB + +zstyle :compinstall filename '$ZDOTDIR/.zshrc' + +autoload -Uz compinit +compinit + +# Initialize colors. +autoload -U colors +colors + +# Autoload zsh functions. +fpath=($ZDOTDIR/functions $fpath) +autoload -U $ZDOTDIR/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_vars' +precmd_functions+='precmd_update_git_vars' +precmd_functions+='precmd_update_updates' +chpwd_functions+='chpwd_update_git_vars' + +# Set the prompt. +PROMPT='$(prompt)' +RPROMPT='$(rprompt)' + +# Set terminal name to current running application +case $TERM in + rxvt*) + precmd () { print -Pn "\e]0;%~\a" } + preexec () { print -Pn "\e]0;$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 + +bindkey "^W" backward-delete-char + +# Show syntax highlighting when we're not running in emacs +if [ -z $EMACS ]; then + source $ZDOTDIR/syntax-highlighting/zsh-syntax-highlighting.zsh + + ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=blue' + ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=blue' +fi diff --git a/.config/zsh/functions/chpwd_show_todo b/.config/zsh/functions/chpwd_show_todo new file mode 100644 index 0000000..88ee853 --- /dev/null +++ b/.config/zsh/functions/chpwd_show_todo @@ -0,0 +1,7 @@ +# -*- mode: Shell-script -*- + +if [ -e ".toudou" ]; then + toudou +elif [ "$PWD" = "$HOME" ]; then + toudou list -g +fi diff --git a/.config/zsh/functions/chpwd_update_git_vars b/.config/zsh/functions/chpwd_update_git_vars new file mode 100755 index 0000000..0ef846a --- /dev/null +++ b/.config/zsh/functions/chpwd_update_git_vars @@ -0,0 +1,2 @@ +# -*- mode: shell-script -*- +update_current_git_vars diff --git a/.config/zsh/functions/env b/.config/zsh/functions/env new file mode 100644 index 0000000..6eb728a --- /dev/null +++ b/.config/zsh/functions/env @@ -0,0 +1,3 @@ +# -*- mode: shell-script -*- + +/usr/bin/env "$@" | grep -v ^LESS_TERMCAP_ diff --git a/.config/zsh/functions/get_cnt b/.config/zsh/functions/get_cnt new file mode 100644 index 0000000..5fc3d4f --- /dev/null +++ b/.config/zsh/functions/get_cnt @@ -0,0 +1,15 @@ +# -*- mode: shell-script -*- + +if [ -n "$1" ]; then + if [ -e "$HOME/.local/share/$1.cnt" ]; then + cnt=$(/bin/cat "$HOME/.local/share/$1.cnt") + fi + + if [ -z "$cnt" ]; then + cnt=0 + fi + + echo $cnt +else + echo "No count name specified" >&2 +fi diff --git a/.config/zsh/functions/line b/.config/zsh/functions/line new file mode 100644 index 0000000..58f7aed --- /dev/null +++ b/.config/zsh/functions/line @@ -0,0 +1,8 @@ +# -*- mode: shell-script; eval: (git-auto-commit-mode 1) -*- + +let start=$(expr $1 + 1) +let width=$(expr $COLUMNS - $2) + +for i in {$start..$width}; do + echo -n \\x2d +done diff --git a/.config/zsh/functions/precmd_update_git_vars b/.config/zsh/functions/precmd_update_git_vars new file mode 100755 index 0000000..172456a --- /dev/null +++ b/.config/zsh/functions/precmd_update_git_vars @@ -0,0 +1,6 @@ +# -*- mode: shell-script -*- + +if [ -n "$__EXECUTED_GIT_COMMAND" ]; then + update_current_git_vars + unset __EXECUTED_GIT_COMMAND +fi diff --git a/.config/zsh/functions/precmd_update_updates b/.config/zsh/functions/precmd_update_updates new file mode 100644 index 0000000..639fd5c --- /dev/null +++ b/.config/zsh/functions/precmd_update_updates @@ -0,0 +1,11 @@ +# -*- mode: shell-script -*- + +if [ -n "$__EXECUTED_PACMAN_COMMAND" ]; then + update_pac_cnt + unset __EXECUTED_PACMAN_COMMAND +fi + +if [ -n "$__EXECUTED_COWER_COMMAND" ]; then + update_aur_cnt + unset __EXECUTED_COWER_COMMAND +fi diff --git a/.config/zsh/functions/preexec_update_vars b/.config/zsh/functions/preexec_update_vars new file mode 100644 index 0000000..105d240 --- /dev/null +++ b/.config/zsh/functions/preexec_update_vars @@ -0,0 +1,13 @@ +# -*- mode: shell-script -*- + +case "$1" in + git*) + __EXECUTED_GIT_COMMAND=1 + ;; + cower*) + __EXECUTED_COWER_COMMAND=1 + ;; + *pacman*) + __EXECUTED_PACMAN_COMMAND=1 + ;; +esac diff --git a/.config/zsh/functions/prompt b/.config/zsh/functions/prompt new file mode 100644 index 0000000..6fe927b --- /dev/null +++ b/.config/zsh/functions/prompt @@ -0,0 +1,15 @@ +# -*- mode: shell-script; eval: (git-auto-commit-mode 1) -*- + +local pac_cnt=$(get_cnt updates) +local aur_cnt=$(get_cnt aur) +local hostname=$(hostname | cut -d . -f 1) + +if [ $pac_cnt -gt 0 -o $aur_cnt -gt 0 ]; then + printf "%s%d%s/%s%d%s:" \ + "%{${fg[cyan]}%}" $pac_cnt "%{${fg[default]}%}" \ + "%{${fg[cyan]}%}" $aur_cnt "%{${fg[default]}%}" +fi + +printf '%s%s%s:%s%s%s%s ' \ + "%{${fg[magenta]}%}" $hostname "%{${fg[default]}%}" \ + "%(?.%{${fg[green]}%}.%{${fg[red]}%})" "%~" "%{${fg[default]}%}" diff --git a/.config/zsh/functions/prompt_git_info b/.config/zsh/functions/prompt_git_info new file mode 100755 index 0000000..76d889a --- /dev/null +++ b/.config/zsh/functions/prompt_git_info @@ -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 diff --git a/.config/zsh/functions/rprompt b/.config/zsh/functions/rprompt new file mode 100644 index 0000000..3392379 --- /dev/null +++ b/.config/zsh/functions/rprompt @@ -0,0 +1,4 @@ +# -*- mode: shell-script -*- + +local git_info="$(prompt_git_info)" +printf '%s%s' $git_info "%{${fg[default]}%}" diff --git a/.config/zsh/functions/update_current_git_vars b/.config/zsh/functions/update_current_git_vars new file mode 100755 index 0000000..71f37e7 --- /dev/null +++ b/.config/zsh/functions/update_current_git_vars @@ -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 diff --git a/.config/zsh/functions/welcome b/.config/zsh/functions/welcome new file mode 100644 index 0000000..bd6aacd --- /dev/null +++ b/.config/zsh/functions/welcome @@ -0,0 +1,10 @@ +# -*- mode: shell-script; eval: (git-auto-commit-mode 1) -*- + +echo " , _ _ _ |" +echo " /#\\ __ _ _ __ ___| |__ | (_)_ __ _ ___ __ |" +echo " /###\\ / _\` | '__/ __| '_ \\| | | '_ \\| | | \\ \\/ / |" +echo " /#####\\ | (_| | | | (__| | | | | | | | | |_| |> < |" +echo " /##,-,##\\ \\__,_|_| \\___|_| |_|_|_|_| |_|\\__,_/_/\\_\\ |" +echo " /##( )##\\ |" +echo " /#.-- --.#\\ A simple, lightweight linux distribution. |" +echo " /\` \`\\ |" -- cgit v1.2.3-54-g00ecf