From 2b9e9b5710fa860b07aca989198c2514a0c9144a Mon Sep 17 00:00:00 2001 From: elsdrm Date: Sat, 13 Dec 2014 13:49:55 +0800 Subject: [PATCH 1/4] Add a modified version of bureau theme. --- themes/bureau_elsdrm.zsh-theme | 116 +++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 themes/bureau_elsdrm.zsh-theme diff --git a/themes/bureau_elsdrm.zsh-theme b/themes/bureau_elsdrm.zsh-theme new file mode 100644 index 000000000..61c72c6bc --- /dev/null +++ b/themes/bureau_elsdrm.zsh-theme @@ -0,0 +1,116 @@ +# oh-my-zsh Bureau Theme ( modified by Hsueh-Min Chen at 12-13-2014 ) + +### Initialization +last_command=$? # Must come first! + +### NVM + +ZSH_THEME_NVM_PROMPT_PREFIX="%B⬡%b " +ZSH_THEME_NVM_PROMPT_SUFFIX="" + +### Git [±master ▾●] + +ZSH_THEME_GIT_PROMPT_PREFIX="[%{$fg_bold[green]%}±%{$reset_color%}%{$fg_bold[white]%}" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}]" +ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}✓%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg[cyan]%}▴%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_BEHIND="%{$fg[magenta]%}▾%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_STAGED="%{$fg_bold[green]%}●%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg_bold[yellow]%}●%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg_bold[red]%}●%{$reset_color%}" + +bureau_git_branch () { + ref=$(command git symbolic-ref HEAD 2> /dev/null) || \ + ref=$(command git rev-parse --short HEAD 2> /dev/null) || return + echo "${ref#refs/heads/}" +} + +bureau_git_status () { + _INDEX=$(command git status --porcelain -b 2> /dev/null) + _STATUS="" + if $(echo "$_INDEX" | grep '^[AMRD]. ' &> /dev/null); then + _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_STAGED" + fi + if $(echo "$_INDEX" | grep '^.[MTD] ' &> /dev/null); then + _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNSTAGED" + fi + if $(echo "$_INDEX" | grep -E '^\?\? ' &> /dev/null); then + _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNTRACKED" + fi + if $(echo "$_INDEX" | grep '^UU ' &> /dev/null); then + _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_UNMERGED" + fi + if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then + _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_STASHED" + fi + if $(echo "$_INDEX" | grep '^## .*ahead' &> /dev/null); then + _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_AHEAD" + fi + if $(echo "$_INDEX" | grep '^## .*behind' &> /dev/null); then + _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_BEHIND" + fi + if $(echo "$_INDEX" | grep '^## .*diverged' &> /dev/null); then + _STATUS="$_STATUS$ZSH_THEME_GIT_PROMPT_DIVERGED" + fi + + echo $_STATUS +} + +bureau_git_prompt () { + local _branch=$(bureau_git_branch) + local _status=$(bureau_git_status) + local _result="" + if [[ "${_branch}x" != "x" ]]; then + _result="$ZSH_THEME_GIT_PROMPT_PREFIX$_branch" + if [[ "${_status}x" != "x" ]]; then + _result="$_result $_status" + fi + _result="$_result$ZSH_THEME_GIT_PROMPT_SUFFIX" + fi + echo $_result +} + + +_PATH="%{$fg_bold[blue]%}%~%{$reset_color%}" + +if [[ $EUID -eq 0 ]]; then + _USERNAME="%{$fg_bold[red]%}%n" +else + _USERNAME="%{$fg_bold[white]%}%n" +fi +_LIBERTY="%(?:%{$reset_color%}> %{$fg_bold[green]%}$:%? %{$fg_bold[red]%}$)" + +_USERNAME="$_USERNAME%{$reset_color%}@%m" +_LIBERTY="$_LIBERTY%{$reset_color%}" + + +get_space () { + local STR=$1$2 + local zero='%([BSUbfksu]|([FB]|){*})' + local LENGTH=${#${(S%%)STR//$~zero/}} + local SPACES="" + (( LENGTH = ${COLUMNS} - $LENGTH - 1)) + + for i in {0..$LENGTH} + do + SPACES="$SPACES " + done + + echo $SPACES +} + +_1LEFT="$_USERNAME $_PATH" +_1RIGHT="[%*] " + +bureau_precmd () { + _1SPACES=`get_space $_1LEFT $_1RIGHT` + print + print -rP "$_1LEFT$_1SPACES$_1RIGHT" +} + +setopt prompt_subst +PROMPT='$_LIBERTY ' +RPROMPT='$(nvm_prompt_info) $(bureau_git_prompt)' + +autoload -U add-zsh-hook +add-zsh-hook precmd bureau_precmd From 4d56177b688c3aab7ccace10bb169bcfa2ab978c Mon Sep 17 00:00:00 2001 From: elsdrm Date: Mon, 15 Dec 2014 18:58:53 +0800 Subject: [PATCH 2/4] Add mode indicator for zsh. --- themes/bureau_elsdrm.zsh-theme | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/themes/bureau_elsdrm.zsh-theme b/themes/bureau_elsdrm.zsh-theme index 61c72c6bc..422df38eb 100644 --- a/themes/bureau_elsdrm.zsh-theme +++ b/themes/bureau_elsdrm.zsh-theme @@ -2,6 +2,8 @@ ### Initialization last_command=$? # Must come first! +NORMAL_SYMBOL='@' +INSERT_SYMBOL='%%' ### NVM @@ -78,10 +80,9 @@ if [[ $EUID -eq 0 ]]; then else _USERNAME="%{$fg_bold[white]%}%n" fi -_LIBERTY="%(?:%{$reset_color%}> %{$fg_bold[green]%}$:%? %{$fg_bold[red]%}$)" +_LIBERTY="%(?:%{$reset_color%}> %{$fg_bold[green]%}:%? %{$fg_bold[red]%})" _USERNAME="$_USERNAME%{$reset_color%}@%m" -_LIBERTY="$_LIBERTY%{$reset_color%}" get_space () { @@ -108,9 +109,17 @@ bureau_precmd () { print -rP "$_1LEFT$_1SPACES$_1RIGHT" } +function zle-line-init zle-keymap-select { + _VI_MODE="${${KEYMAP/vicmd/$NORMAL_SYMBOL}/(main|viins)/$INSERT_SYMBOL}" + zle reset-prompt +} + +zle -N zle-line-init +zle -N zle-keymap-select + setopt prompt_subst -PROMPT='$_LIBERTY ' -RPROMPT='$(nvm_prompt_info) $(bureau_git_prompt)' +PROMPT='$_LIBERTY$_VI_MODE%{$reset_color%}' +RPROMPT='$(nvm_prompt_info) %{$reset_color%}$(bureau_git_prompt)' autoload -U add-zsh-hook add-zsh-hook precmd bureau_precmd From 70cc0e032f8974e9cfd5a51d7cb2533be501925a Mon Sep 17 00:00:00 2001 From: elsdrm Date: Mon, 15 Dec 2014 21:45:16 +0800 Subject: [PATCH 3/4] Fix previous commit. --- themes/bureau_elsdrm.zsh-theme | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/themes/bureau_elsdrm.zsh-theme b/themes/bureau_elsdrm.zsh-theme index 422df38eb..a70d0b22a 100644 --- a/themes/bureau_elsdrm.zsh-theme +++ b/themes/bureau_elsdrm.zsh-theme @@ -2,9 +2,8 @@ ### Initialization last_command=$? # Must come first! -NORMAL_SYMBOL='@' -INSERT_SYMBOL='%%' - +NORMAL_SYMBOL="%{$bg[red]%}%{$fg_bold[white]%}@%{$reset_color%}" +INSERT_SYMBOL='#' ### NVM ZSH_THEME_NVM_PROMPT_PREFIX="%B⬡%b " @@ -110,7 +109,7 @@ bureau_precmd () { } function zle-line-init zle-keymap-select { - _VI_MODE="${${KEYMAP/vicmd/$NORMAL_SYMBOL}/(main|viins)/$INSERT_SYMBOL}" + _MODE_SYMBOL="${${KEYMAP/vicmd/$NORMAL_SYMBOL}/(main|viins)/$INSERT_SYMBOL}" zle reset-prompt } @@ -118,7 +117,7 @@ zle -N zle-line-init zle -N zle-keymap-select setopt prompt_subst -PROMPT='$_LIBERTY$_VI_MODE%{$reset_color%}' +PROMPT='$_LIBERTY$_MODE_SYMBOL%{$reset_color%} ' RPROMPT='$(nvm_prompt_info) %{$reset_color%}$(bureau_git_prompt)' autoload -U add-zsh-hook From 3ce1caf15292617aaeadf37b5e6f08ff06a65cde Mon Sep 17 00:00:00 2001 From: elsdrm Date: Tue, 16 Dec 2014 00:44:25 +0800 Subject: [PATCH 4/4] Zsh's mode indicator behaves better. --- themes/bureau_elsdrm.zsh-theme | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/themes/bureau_elsdrm.zsh-theme b/themes/bureau_elsdrm.zsh-theme index a70d0b22a..c6540d7db 100644 --- a/themes/bureau_elsdrm.zsh-theme +++ b/themes/bureau_elsdrm.zsh-theme @@ -2,8 +2,12 @@ ### Initialization last_command=$? # Must come first! -NORMAL_SYMBOL="%{$bg[red]%}%{$fg_bold[white]%}@%{$reset_color%}" +NORMAL_SYMBOL='@' INSERT_SYMBOL='#' +NORMAL_SYMBOL_PREFIX="%{$bg[red]%}%{$fg_bold[white]%}" +NORMAL_SYMBOL_SUFFIX="%{$reset_color%}" +INSERT_SYMBOL_PREFIX="" +INSERT_SYMBOL_SUFFIX="%{$reset_color%}" ### NVM ZSH_THEME_NVM_PROMPT_PREFIX="%B⬡%b " @@ -109,7 +113,7 @@ bureau_precmd () { } function zle-line-init zle-keymap-select { - _MODE_SYMBOL="${${KEYMAP/vicmd/$NORMAL_SYMBOL}/(main|viins)/$INSERT_SYMBOL}" + _MODE_SYMBOL="${${KEYMAP/vicmd/$NORMAL_SYMBOL_PREFIX$NORMAL_SYMBOL$NORMAL_SYMBOL_SUFFIX}/(main|viins)/$INSERT_SYMBOL_PREFIX$INSERT_SYMBOL$INSERT_SYMBOL_SUFFIX}" zle reset-prompt }