Merge pull request #300 from JamesMConroy/rjorgenson-refactor

Refactored rjorgenson theme to reduce subshells
This commit is contained in:
Koichi Murase
2022-02-01 01:24:32 +09:00
committed by GitHub

View File

@ -3,99 +3,98 @@
# set colors for use throughout the prompt
# i like things consistent
BRACKET_COLOR=${blue}
STRING_COLOR=${green}
OMB_THEME_BRACKET_COLOR="${OMB_THEME_BRACKET_COLOR-${blue}}"
OMB_THEME_STRING_COLOR="${OMB_THEME_STRING_COLOR-${green}}"
SCM_THEME_PROMPT_PREFIX=""
SCM_THEME_PROMPT_SUFFIX=""
SCM_THEME_PROMPT_DIRTY=" ${bold_red}${normal}"
SCM_THEME_PROMPT_CLEAN=" ${bold_green}${normal}"
SCM_GIT_CHAR="${STRING_COLOR}±${normal}"
SCM_GIT_CHAR="${OMB_THEME_STRING_COLOR}±${normal}"
SCM_SVN_CHAR="${bold_cyan}${normal}"
SCM_HG_CHAR="${bold_red}${normal}"
PROMPT_CHAR="${OMB_THEME_BRACKET_COLOR}${normal}"
if [[ $OSTYPE == *darwin* ]]; then
PROMPT_CHAR="${OMB_THEME_BRACKET_COLOR}${normal}"
fi
#Mysql Prompt
export MYSQL_PS1="(\u@\h) [\d]> "
TITLEBAR=""
case $TERM in
xterm*)
TITLEBAR="\[\033]0;\w\007\]"
;;
*)
TITLEBAR=""
;;
xterm*) TITLEBAR="\[\033]0;\w\007\]" ;;
esac
PS3=">> "
__my_rvm_ruby_version() {
local gemset=$(echo $GEM_HOME | awk -F'@' '{print $2}')
[ "$gemset" != "" ] && gemset="@$gemset"
local version=$(echo $MY_RUBY_HOME | awk -F'-' '{print $2}')
local full="$version$gemset"
[ "$full" != "" ] && echo "${BRACKET_COLOR}[${STRING_COLOR}$full${BRACKET_COLOR}]${normal}"
local gemset ; gemset=$(awk -F'@' '{print $2}' <<< "${GEM_HOME}")
local version ; version=$(awk -F'-' '{print $2}' <<< "${MY_RUBY_HOME}")
[ "${gemset}" != "" ] && gemset="@${gemset}"
local full="${version}${gemset}"
[ "${full}" != "" ] \
&& echo "${OMB_THEME_BRACKET_COLOR}[${OMB_THEME_STRING_COLOR}${full}${OMB_THEME_BRACKET_COLOR}]${normal}"
}
is_vim_shell() {
if [ ! -z "$VIMRUNTIME" ]
then
echo "${BRACKET_COLOR}[${STRING_COLOR}vim shell${BRACKET_COLOR}]${normal}"
fi
if [ -n "${VIMRUNTIME}" ] ; then
echo "${OMB_THEME_BRACKET_COLOR}[${OMB_THEME_STRING_COLOR}vim shell${OMB_THEME_BRACKET_COLOR}]${normal}"
fi
}
function is_integer() { # helper function for todo-txt-count
is_integer() { # helper function to make sure input is an integer
[ "$1" -eq "$1" ] > /dev/null 2>&1
return $?
return $?
}
# XXX do we need/want to integrate with todo.sh? We don't provide it and I
# can't find a version online that accepts ls as an input
todo_txt_count() {
if _omb_util_command_exists todo.sh; then # is todo.sh installed
count=$(todo.sh ls | egrep "TODO: [0-9]+ of ([0-9]+) tasks shown" | awk '{ print $4 }')
if is_integer $count; then # did we get a sane answer back
echo "${BRACKET_COLOR}[${STRING_COLOR}T:$count${BRACKET_COLOR}]$normal"
local count=$(todo.sh ls \
| awk '/TODO: [0-9]+ of ([0-9]+) tasks shown/ { print $4 }')
if is_integer "${count}" ; then # did we get a sane answer back
echo "${OMB_THEME_BRACKET_COLOR}[${OMB_THEME_STRING_COLOR}T:$count${OMB_THEME_BRACKET_COLOR}]$normal"
fi
fi
}
modern_scm_prompt() {
CHAR=$(scm_char)
if [ $CHAR = $SCM_NONE_CHAR ]
then
return
else
echo "${BRACKET_COLOR}[${CHAR}${BRACKET_COLOR}][${STRING_COLOR}$(scm_prompt_info)${BRACKET_COLOR}]$normal"
fi
}
my_prompt_char() {
if [[ $OSTYPE =~ "darwin" ]]; then
echo "${BRACKET_COLOR}${normal}"
else
echo "${BRACKET_COLOR}${normal}"
local CHAR=$(scm_char)
if [ ! "${CHAR}" = "${SCM_NONE_CHAR}" ] ; then
printf "%s" \
"${OMB_THEME_BRACKET_COLOR}[${CHAR}${OMB_THEME_BRACKET_COLOR}]" \
"[${OMB_THEME_STRING_COLOR}$(scm_prompt_info)${OMB_THEME_BRACKET_COLOR}]$normal"
printf "\n"
fi
}
_omb_theme_PROMPT_COMMAND() {
local my_host="${OMB_THEME_STRING_COLOR}\h${normal}";
local my_user="${OMB_THEME_STRING_COLOR}\u${normal}";
local my_path="${OMB_THEME_STRING_COLOR}\w${normal}";
local bracket_c="${OMB_THEME_BRACKET_COLOR}"
my_ps_host="${STRING_COLOR}\h${normal}";
my_ps_user="${STRING_COLOR}\u${normal}";
my_ps_root="${bold_red}\u${normal}";
my_ps_path="${STRING_COLOR}\w${normal}";
local line2 ; line2="${bracket_c}└─$(todo_txt_count)${PROMPT_CHAR}"
# nice prompt
case "`id -u`" in
0) PS1="${TITLEBAR}${BRACKET_COLOR}┌─[$my_ps_root${BRACKET_COLOR}][$my_ps_host${BRACKET_COLOR}]$(modern_scm_prompt)$(__my_rvm_ruby_version)${BRACKET_COLOR}[${STRING_COLOR}\w${BRACKET_COLOR}]$(is_vim_shell)
${BRACKET_COLOR}└─$(my_prompt_char)${normal}"
;;
*) PS1="${TITLEBAR}${BRACKET_COLOR}┌─[$my_ps_user${BRACKET_COLOR}][$my_ps_host${BRACKET_COLOR}]$(modern_scm_prompt)$(__my_rvm_ruby_version)${BRACKET_COLOR}[${STRING_COLOR}\w${BRACKET_COLOR}]$(is_vim_shell)
${BRACKET_COLOR}└─$(todo_txt_count)$(my_prompt_char)"
case "$(id -u)" in
0)
my_user="${bold_red}\u${normal}";
line2="${bracket_c}└─${PROMPT_CHAR}"
;;
esac
PS1="${TITLEBAR}"
PS1="${PS1}${bracket_c}┌─[${my_user}${bracket_c}][$my_host${bracket_c}]"
PS1="${PS1}$(modern_scm_prompt)"
PS1="${PS1}$(__my_rvm_ruby_version)"
PS1="${PS1}${bracket_c}[${my_path}${bracket_c}]$(is_vim_shell)"
PS1="${PS1}\n${line2}"
}
PS2="└─$(my_prompt_char)"
PS2="└─${PROMPT_CHAR}"
PS3=">> "
_omb_util_add_prompt_command _omb_theme_PROMPT_COMMAND