Pregunta:
Así que tengo un truco para que mi org-clock emacs se muestre en polybar (una utilidad del panel del sistema). Se trata de un script que se ve así:
CLOCKSTRING=`emacsclient --eval "(if (org-clocking-p)(print (org-clock-get-clock-string))(print -1))))"`
if [[ $CLOCKSTRING = "-1" ]]
then
echo "Off-clock!"
else
echo $CLOCKSTRING | cut -d\" -f2
fi
El problema es que print
aparentemente imprime tanto en la salida del comando de la línea de comandos (donde lo quiero) como en un búfer en emacs (donde no lo quiero. Cuando estoy trabajando en emacs, solo veo una ventana emergente que dice la salida de este comando todo el tiempo, es decir, "-1 -1 -1 -1". ¿Cómo consigo que print
imprima solo en la línea de comando?
Respuesta:
Cuando Emacsclient evalúa una expresión, se evalúa en un contexto Emacs "normal". La salida estándar va a su destino normal, que es el área de eco. No va a Emacsclient. Lo que ves en Emacsclient es el valor de retorno. Así que suelta la print
.
CLOCKSTRING=`emacsclient --eval "(if (org-clocking-p) (org-clock-get-clock-string) -1)"`