summaryrefslogtreecommitdiff
path: root/dot-oh-my-zsh/custom/themes/spaceship-prompt/lib/section.zsh
diff options
context:
space:
mode:
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.zsh55
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
+}