zsh não re-computando meu prompt de shell

Isso pode ser um pouco marginal, mas recentemente eu mudei para o zsh e estou tendo um problema na customização do prompt do shell.

Parte do meu .zshrc se parece com isso:

# keeping this simple right now by just printing the date, but imagine this function would look for something specific when moving to a new directory each time
function parse_special {
    print $(date)
}

autoload -U colors && colors
PS1="%{$fg[green]%}%n@%m %{$fg[blue]%}%c %{$fg[yellow]%}%{$(parse_special)%} %{$reset_color%}%# "

Quando eu lanço terminal, tudo parece bem; meu prompt é o que eu espero:

me@someHost ~ Wed Aug 8 22:56:22 PDT 2012 %

Mas quando eu cd para outro diretório, parece que minha função parse_special não é chamada novamente para recalcular meu prompt personalizado (observe que a data não está mudando):

me@someHost ~ Wed Aug 8 22:56:22 PDT 2012 % cd .ssh 
me@someHost .ssh Wed Aug 8 22:56:22 PDT 2012 % cd ../workspace 
me@someHost workspace Wed Aug 8 22:56:22 PDT 2012 % 

Existe alguma maneira que eu possa dizer ao zsh para recalcular o prompt cada vez que ele está prestes a mostrá-lo?

Muito obrigado por qualquer sugestão.

responder ao cjhveal

Parece que o PS1 não gosta de definir valores simples. Eu tentei o seguinte:

local tp1="%{$fg[green]%}%n@%m%{$reset_color%}"
PS1="${tp1}"
print "PS1 set by tp1: ${PS1}"
local tp2='%{$fg[green]%}%n@%m%{$reset_color%}'
PS1="${tp2}"
print "PS1 set by tp2: ${PS1}"

E tenho essa saída

#inner stuff was green
PS1 set by tp1: %{%}%n@%m%{%}
#everything was uncolored
PS1 set by tp2: %{$fg[green]%}%n@%m%{$reset_color%}

Eu também devo acrescentar, com base na sugestão do cjhveal, aqui está o que eu tentei literalmente. Mais uma vez, as citações simples parecem estar bagunçando as coisas

function parse_special {    
    print $(date)
}

autoload -U colors && colors
local prompt_user='%{$fg[green]%}%n@%m%{$reset_color%}'
local prompt_root='%{$fg[red]%}%n@%m%{$reset_color%}'
local prompt_dir='%{$fg[blue]%}%c%{$reset_color%}'
local prompt_special='%{$fg[yellow]%}%{$(parse_special)%}%{$reset_color%}'
PS1="${prompt_user} ${prompt_dir}${prompt_special}%# "

questionAnswers(2)

yourAnswerToTheQuestion