zsh no volver a calcular mi indicador de shell

Esto podría ser un poco marginal, pero recientemente me mudé a zsh y tengo un problema al personalizar mi indicador de shell.

Parte de mi .zshrc se ve así:

# 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%}%# "

Cuando lanzo el terminal, todo se ve bien; Mi mensaje es lo que espero:

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

Pero cuando cd a otro directorio, aparece que no se vuelve a llamar a mi función parse_special para volver a calcular mi indicador personalizado (observe que la fecha no está cambiando):

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 % 

¿Hay alguna manera en que pueda decirle a zsh que vuelva a calcular el indicador cada vez que esté a punto de mostrarlo?

Muchas gracias por cualquier sugerencia.

responder a cjhveal

Parece que a PS1 no le gusta configurarse con valores de comillas simples. Intenté lo siguiente:

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}"

Y tengo esta salida.

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

También debo agregar, basado en la sugerencia de cjhveal, esto es lo que literalmente intenté. De nuevo, las comillas simples parecen estar arruinando las cosas.

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}%# "

Respuestas a la pregunta(2)

Su respuesta a la pregunta