Posso usar a saída de uma função personalizada do ZSH na barra de status do Tmux?

7

Eu defini uma função em ~ / .zshrc:

foo() { print "FOO" }

Gostaria de publicá-lo na minha barra de status do Tmux. Eu adicionei isso ao ~ / .tmux.conf:

set -g status-right "foo: #(foo)"

Mas eu só vejo a parte estática disso; a saída da função está ausente. (Embora minha função atual seja mais complicada, isso é verdade até para o exemplo trivial acima.)

Funciona bem quando eu chamo um script em vez de uma função. Qual é a diferença? É possível usar uma função lá?

    
por Josh French 19.12.2013 / 17:32

1 resposta

7

A página tmux man indica a opção set :

#(shell-command) First line of the command's output

Mas tenho certeza, isso não significa shell funcitons , porque tmux não executará o shell-command na sessão atual do shell, mas inicia uma nova instância, que inicia como não-interativo , portanto, não fonte seu ~/.zshrc config e, portanto, não sabe sobre as funções definidas nele.

Para trabalhar, você poderia criar um script , chamado foo

#!/bin/zsh -f

source ~/.zshrc   # or just the desired function to save parsing time
# use some functions defined in ~/.zshrc

print "FOO"
    
por 20.12.2013 / 14:11

Tags