Estou tentando executar uma função mais complexa que constrói a seqüência de caracteres PROMPT no ZSH e, em circunstâncias normais, está funcionando. No entanto, como tenho o seguinte TRAPINT para imprimir "^ C" quando envio o SIGINT no prompt, ele não funciona (não chama minha função).
.zshrc
TRAPINT() {
print -n "^C"
return $(( 128 + $1 ))
}
my_prompt_function() {
echo '>'
}
setopt PROMPT_SUBST
PROMPT='$(my_prompt_function)'
No entanto, se eu pressionar ^Cno prompt, ele simplesmente trava:
>
>^C
# ...hangs here until I press <Enter>
Como posso dizer, de dentro do TRAPINT, que estou no prompt, vs. em um programa em execução, para que não possa retornar um erro?