- local width width_left width_right
- local top_left top_right
-
- # Display the current time in HEX in bright blue and vcs_info (if used) on
- # the right in the top prompt.
- top_right="$vcs_info_msg_0_($blue%B0x$(([##16] EPOCHSECONDS))%b$default)"
- width_right=${#${(S%%)top_right//$~zero/}}
- # Remove it if it would get too long.
- if [[ $(( COLUMNS - 4 - 1 - width_right )) -lt 0 ]]; then
- top_right=
- width_right=0
- fi
+ # Setup. Create variables holding the formatted content.
+
+ # Current directory in yellow, truncated if necessary (WIDTH is replaced
+ # below).
+ local directory="${yellow}%WIDTH<..<%~%<<${default}"
+
+ # Information about the VCS in this directory.
+ local vcs="${vcs_info_msg_0_}"
+ # Current time (seconds since epoch) in Hex in bright blue.
+ local seconds="${blue}%B0x$(([##16] EPOCHSECONDS))%b${default}"
+
+ # User name (%n) in bright green.
+ local user="${green}%B%n%b${default}"
+ # Host name (%m) in bright green.
+ local host="${green}%B%m%b${default}"
+ # Number of background processes in yellow.
+ local background="%(1j.${yellow}%j${default}.)"
+ # Exit code in bright red if not zero.
+ local exitcode="%(?..(${red}%B%?%b${default}%) )"
+
+ # Prefix characters in first and second line.
+ local top_prefix="${blue}%B.-%b${default}"
+ local bottom_prefix="${blue}%B'%b${default}"
+
+ # Combine them to create the prompt.
+
+ local top_right="${vcs}(${seconds})"
+
+ local width_top_prefix=${#${(S%%)top_prefix//$~zero/}}
+ local width_top_right=${#${(S%%)top_right//$~zero/}}