Add README and shell polish
This commit is contained in:
@@ -7,6 +7,10 @@ zstyle ':vcs_info:git:*' formats ' %b'
|
||||
|
||||
typeset -g PROMPT_SHOW_SPACER=0
|
||||
typeset -gA PROMPT_PROJECT_MATCH_CACHE
|
||||
typeset -gA PROMPT_VERSION_CACHE
|
||||
typeset -g PROMPT_FIRST_RENDER=1
|
||||
typeset -g PROMPT_PROJECT_ROOT_CACHE_PWD=''
|
||||
typeset -g PROMPT_PROJECT_ROOT_CACHE=''
|
||||
|
||||
prompt_preexec() {
|
||||
case "$1" in
|
||||
@@ -24,8 +28,16 @@ get_command_version() {
|
||||
local binary_path=""
|
||||
local raw_version=""
|
||||
|
||||
if [[ -n ${PROMPT_VERSION_CACHE[$command_name]+x} ]]; then
|
||||
print -r -- "${PROMPT_VERSION_CACHE[$command_name]}"
|
||||
return 0
|
||||
fi
|
||||
|
||||
binary_path="$(whence -p "$command_name" 2>/dev/null || true)"
|
||||
[ -n "$binary_path" ] && [ -x "$binary_path" ] || return 0
|
||||
if ! [ -n "$binary_path" ] || ! [ -x "$binary_path" ]; then
|
||||
PROMPT_VERSION_CACHE[$command_name]=""
|
||||
return 0
|
||||
fi
|
||||
|
||||
case "$command_name" in
|
||||
python)
|
||||
@@ -47,16 +59,29 @@ get_command_version() {
|
||||
raw_version="${raw_version%% *}"
|
||||
;;
|
||||
*)
|
||||
PROMPT_VERSION_CACHE[$command_name]=""
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
[ -n "$raw_version" ] || return 0
|
||||
[ -n "$raw_version" ] || {
|
||||
PROMPT_VERSION_CACHE[$command_name]=""
|
||||
return 0
|
||||
}
|
||||
|
||||
PROMPT_VERSION_CACHE[$command_name]="$raw_version"
|
||||
print -r -- "$raw_version"
|
||||
}
|
||||
|
||||
get_project_root() {
|
||||
command git rev-parse --show-toplevel 2>/dev/null || print -r -- "$PWD"
|
||||
if [ "$PROMPT_PROJECT_ROOT_CACHE_PWD" = "$PWD" ] && [ -n "$PROMPT_PROJECT_ROOT_CACHE" ]; then
|
||||
print -r -- "$PROMPT_PROJECT_ROOT_CACHE"
|
||||
return 0
|
||||
fi
|
||||
|
||||
PROMPT_PROJECT_ROOT_CACHE_PWD="$PWD"
|
||||
PROMPT_PROJECT_ROOT_CACHE="$(command git rev-parse --show-toplevel 2>/dev/null || print -r -- "$PWD")"
|
||||
print -r -- "$PROMPT_PROJECT_ROOT_CACHE"
|
||||
}
|
||||
|
||||
project_has_pattern() {
|
||||
@@ -166,6 +191,17 @@ build_prompt() {
|
||||
local prompt_spacer=""
|
||||
local separator="::"
|
||||
|
||||
if [ "$last_status" -ne 0 ]; then
|
||||
separator="%F{red}::%f"
|
||||
fi
|
||||
|
||||
if [ "$PROMPT_FIRST_RENDER" -eq 1 ]; then
|
||||
PROMPT_FIRST_RENDER=0
|
||||
PROMPT="%B%~%b ${separator} "
|
||||
RPROMPT="%n@%m"
|
||||
return 0
|
||||
fi
|
||||
|
||||
vcs_info
|
||||
git_segment="${vcs_info_msg_0_}"
|
||||
git_status_segment="$(build_git_status_segment)"
|
||||
@@ -228,10 +264,6 @@ build_prompt() {
|
||||
context_line+="${newline}"
|
||||
fi
|
||||
|
||||
if [ "$last_status" -ne 0 ]; then
|
||||
separator="%F{red}::%f"
|
||||
fi
|
||||
|
||||
if [ "$PROMPT_SHOW_SPACER" -eq 1 ]; then
|
||||
prompt_spacer="$(build_prompt_separator_line "$last_status")${newline}"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user