+#
+# Thanks to Adam's prompt for the basic idea of this prompt.
+prompt_precmd() {
+ # Regex to remove elements which take no space. Used to calculate the
+ # width of the top prompt. Thanks to Bart's and Adam's prompt code in
+ # Functions/Prompts/prompt_*_setup.
+ local zero='%([BSUbfksu]|([FB]|){*})'
+
+ # Call vcs_info before every prompt.
+ if [[ -n $RUN_VCS_INFO ]]; then
+ vcs_info
+ else
+ vcs_info_msg_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/}}
+
+ # Calculate the maximum width of ${top_left}. -2 are the braces of
+ # ${top_left}, -1 is one separator from ${top_separator} (we want at least
+ # one between left and right parts).
+ local top_left_width_max=$((
+ COLUMNS - $width_top_prefix - 2 - 1 - $width_top_right
+ ))
+ # Truncate directory if necessary.
+ local top_left="(${directory/WIDTH/${top_left_width_max}})"
+ local width_top_left=${#${(S%%)top_left//$~zero/}}
+
+ # Calculate the width of the top prompt to fill the middle with "-".
+ local width=$((
+ COLUMNS - width_top_prefix - width_top_left - width_top_right
+ ))
+ local top_separator="%B${blue}${(l:${width}::-:)}%b${default}"
+
+ PROMPT="${top_prefix}${top_left}${top_separator}${top_right}
+${bottom_prefix}${user}@${host} ${background}%# ${exitcode}"
+}
+precmd_functions+=(prompt_precmd)