forked from ohmyzsh/ohmyzsh
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
gnzh theme: fix "eval" and related problems.
Switch to normal zsh %F/%f prompt escapes to avoid "eval" and extra variables. Wrap whole thing in anonymous function so the existing `local` statements actually work. Then switch '...' to eager "..." so stuff actually works with local variables. And local-ize the remaining variables that are used only in prompt construction.
- Loading branch information
Showing
1 changed file
with
27 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,53 +1,50 @@ | ||
# ZSH Theme - Preview: http://dl.dropbox.com/u/4109351/pics/gnzh-zsh-theme.png | ||
# Based on bira theme | ||
|
||
# load some modules | ||
autoload -U zsh/terminfo # Used in the colour alias below | ||
setopt prompt_subst | ||
|
||
# make some aliases for the colours: (could use normal escape sequences too) | ||
for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do | ||
eval PR_$color='%{$fg[${(L)color}]%}' | ||
done | ||
eval PR_NO_COLOR="%{$terminfo[sgr0]%}" | ||
eval PR_BOLD="%{$terminfo[bold]%}" | ||
() { | ||
|
||
local PR_USER PR_USER_OP PR_PROMPT PR_HOST | ||
|
||
# Check the UID | ||
if [[ $UID -ne 0 ]]; then # normal user | ||
eval PR_USER='${PR_GREEN}%n${PR_NO_COLOR}' | ||
eval PR_USER_OP='${PR_GREEN}%#${PR_NO_COLOR}' | ||
local PR_PROMPT='$PR_NO_COLOR➤ $PR_NO_COLOR' | ||
PR_USER='%F{green}%n%f' | ||
PR_USER_OP='%F{green}%#%f' | ||
PR_PROMPT='%f➤ %f' | ||
else # root | ||
eval PR_USER='${PR_RED}%n${PR_NO_COLOR}' | ||
eval PR_USER_OP='${PR_RED}%#${PR_NO_COLOR}' | ||
local PR_PROMPT='$PR_RED➤ $PR_NO_COLOR' | ||
PR_USER='%F{red}%n%f' | ||
PR_USER_OP='%F{red}%#%f' | ||
PR_PROMPT='%F{red}➤ %f' | ||
fi | ||
|
||
# Check if we are on SSH or not | ||
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then | ||
eval PR_HOST='${PR_YELLOW}%M${PR_NO_COLOR}' #SSH | ||
PR_HOST='%F{red}%M%f' # SSH | ||
else | ||
eval PR_HOST='${PR_GREEN}%M${PR_NO_COLOR}' # no SSH | ||
PR_HOST='%F{green}%M%f' # no SSH | ||
fi | ||
|
||
local return_code="%(?..%{$PR_RED%}%? ↵%{$PR_NO_COLOR%})" | ||
|
||
local user_host='${PR_USER}${PR_CYAN}@${PR_HOST}' | ||
local current_dir='%{$PR_BOLD$PR_BLUE%}%~%{$PR_NO_COLOR%}' | ||
local return_code="%(?..%F{red}%? ↵%f)" | ||
|
||
local user_host="${PR_USER}%F{cyan}@${PR_HOST}" | ||
local current_dir="%B%F{blue}%~%f%b" | ||
local rvm_ruby='' | ||
if ${HOME}/.rvm/bin/rvm-prompt &> /dev/null; then # detect local user rvm installation | ||
rvm_ruby='%{$PR_RED%}‹$(${HOME}/.rvm/bin/rvm-prompt i v g s)›%{$PR_NO_COLOR%}' | ||
elif which rvm-prompt &> /dev/null; then # detect sysem-wide rvm installation | ||
rvm_ruby='%{$PR_RED%}‹$(rvm-prompt i v g s)›%{$PR_NO_COLOR%}' | ||
elif which rbenv &> /dev/null; then # detect Simple Ruby Version management | ||
rvm_ruby='%{$PR_RED%}‹$(rbenv version | sed -e "s/ (set.*$//")›%{$PR_NO_COLOR%}' | ||
if ${HOME}/.rvm/bin/rvm-prompt &> /dev/null; then # detect user-local rvm installation | ||
rvm_ruby='%F{red}‹$(${HOME}/.rvm/bin/rvm-prompt i v g s)›%f' | ||
elif which rvm-prompt &> /dev/null; then # detect system-wide rvm installation | ||
rvm_ruby='%F{red}‹$(rvm-prompt i v g s)›%f' | ||
elif which rbenv &> /dev/null; then # detect Simple Ruby Version Management | ||
rvm_ruby='%F{red}‹$(rbenv version | sed -e "s/ (set.*$//")›%f' | ||
fi | ||
local git_branch='$(git_prompt_info)%{$PR_NO_COLOR%}' | ||
local git_branch='$(git_prompt_info)' | ||
|
||
#PROMPT="${user_host} ${current_dir} ${rvm_ruby} ${git_branch}$PR_PROMPT " | ||
PROMPT="╭─${user_host} ${current_dir} ${rvm_ruby} ${git_branch} | ||
╰─$PR_PROMPT " | ||
RPS1="${return_code}" | ||
RPROMPT="${return_code}" | ||
|
||
ZSH_THEME_GIT_PROMPT_PREFIX="%F{yellow}‹" | ||
ZSH_THEME_GIT_PROMPT_SUFFIX="› %f" | ||
|
||
ZSH_THEME_GIT_PROMPT_PREFIX="%{$PR_YELLOW%}‹" | ||
ZSH_THEME_GIT_PROMPT_SUFFIX="› %{$PR_NO_COLOR%}" | ||
} |