Atualização: Use zle-line-init
(Agradecimentos a Gilles pela dica)
Não é exatamente o perfil, mas a partir do texto em sua pergunta parece que você está interessado principalmente em medir quanto atraso o plug-in implica.
Uma maneira de obter essa estimativa é utilizando o precmd
hook, que é executado sempre que anterior o prompt é renderizado, e o widget zle-line-init
, que é executado toda vez que o prompt o editor de linha é iniciado.
O seguinte deve fazer o truque. Basta adicioná-lo ao seu ~/.zshrc
.
# set type of SECONDS and start to float to increase precision
typeset -F SECONDS start
# define precmd hook function
precmd () {
# save time since start of zsh in start
start=$SECONDS
}
# define zle-line-init function
zle-line-init () {
# print time since start was set after prompt
PREDISPLAY="[$(( $SECONDS - $start ))] "
}
# link the zle-line-init widget to the function of the same name
zle -N zle-line-init
Com isso, o tempo decorrido para cada prompt será escrito entre colchetes após o prompt, assim:
prompt% [0.00013200000000779255]
Observação: se a função precmd
ou zle-line-init
já estiver definida, você precisará adicionar os respectivos corpos de função às definições existentes. Para precmd
, você precisa colocá-lo no início e para zle-line-init
no final, já que o conteúdo existente de ambos pode influenciar o tempo necessário para processar o prompt (ou o que parece ser o prompt ).
- Para descobrir se
precmd
já está definido, executewhence -c precmd
. -
Para
zle-line-init
runzle -lL zle-line-init
. Se já estiver definido, imprimirá uma linha comozle -N zle-line-init _zsh_highlight_widget_zle-line-init
em que a última palavra é o nome da função vinculada (não é necessário ter o mesmo nome).