diff options
Diffstat (limited to 'dot-oh-my-zsh/custom/themes/spaceship-prompt/lib/section.zsh')
| -rw-r--r-- | dot-oh-my-zsh/custom/themes/spaceship-prompt/lib/section.zsh | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/dot-oh-my-zsh/custom/themes/spaceship-prompt/lib/section.zsh b/dot-oh-my-zsh/custom/themes/spaceship-prompt/lib/section.zsh new file mode 100644 index 00000000..4efb8e2f --- /dev/null +++ b/dot-oh-my-zsh/custom/themes/spaceship-prompt/lib/section.zsh @@ -0,0 +1,55 @@ +# Internal variable for checking if prompt is opened +spaceship_prompt_opened="$SPACESHIP_PROMPT_FIRST_PREFIX_SHOW" + +# Draw prompt section (bold is used as default) +# USAGE: +# spaceship::section <color> [prefix] <content> [suffix] +spaceship::section() { + local color prefix content suffix + [[ -n $1 ]] && color="%F{$1}" || color="%f" + [[ -n $2 ]] && prefix="$2" || prefix="" + [[ -n $3 ]] && content="$3" || content="" + [[ -n $4 ]] && suffix="$4" || suffix="" + + [[ -z $3 && -z $4 ]] && content=$2 prefix='' + + echo -n "%{%B%}" # set bold + if [[ $spaceship_prompt_opened == true ]] && [[ $SPACESHIP_PROMPT_PREFIXES_SHOW == true ]]; then + echo -n "$prefix" + fi + spaceship_prompt_opened=true + echo -n "%{%b%}" # unset bold + + echo -n "%{%B$color%}" # set color + echo -n "$content" # section content + echo -n "%{%b%f%}" # unset color + + echo -n "%{%B%}" # reset bold, if it was diabled before + if [[ $SPACESHIP_PROMPT_SUFFIXES_SHOW == true ]]; then + echo -n "$suffix" + fi + echo -n "%{%b%}" # unset bold +} + +# Compose whole prompt from sections +# USAGE: +# spaceship::compose_prompt [section...] +spaceship::compose_prompt() { + # Option EXTENDED_GLOB is set locally to force filename generation on + # argument to conditions, i.e. allow usage of explicit glob qualifier (#q). + # See the description of filename generation in + # http://zsh.sourceforge.net/Doc/Release/Conditional-Expressions.html + setopt EXTENDED_GLOB LOCAL_OPTIONS + + # Treat the first argument as list of prompt sections + # Compose whole prompt from diferent parts + # If section is a defined function then invoke it + # Otherwise render the 'not found' section + for section in $@; do + if spaceship::defined "spaceship_$section"; then + spaceship_$section + else + spaceship::section 'red' "'$section' not found" + fi + done +} |
