If you want to use the %b (bold off) prompt expansion in formats,
which expands %b itself, use %%b. That will cause the vcs_info
expansion to replace %%b with %b, so that zsh’s prompt expansion
mechanism can handle it. Similarly, to hand down %b from
branchformat, use %%%%b. Sorry for this inconvenience, but it
cannot be easily avoided. Luckily we do not clash with a lot of prompt
expansions and this only needs to be done for those.
When one of the gen-applied-string, gen-unapplied-string, and
set-patch-format hooks is defined,
applying %-escaping (‘foo=${foo//'%'/%%}’) to the interpolated values
for use in the prompt is the responsibility of those hooks (jointly);
when neither of those hooks is defined, vcs_info handles escaping by itself.
We regret this coupling, but it was required for backwards compatibility.