¿Ejecutar script externo al guardar cuando está en cierto modo?

12

Cuando estoy dentro org-mode, quiero que Emacs ejecute un script bash que escribí cada vez que presiono C-x spara guardar. El script sincroniza automáticamente el archivo que estoy guardando en mi Raspberry Pi. Espera el nombre del archivo como argumento.

¿Cómo le digo a Emacs que ejecute el script externo en los orgarchivos cuando guardo?

qacwnfq q
fuente
44
Puedes usarlo after-save-hookpara ejecutar el script
Iqbal Ansari
¿Es este nuestro primer inmigrante? :-)
Malabarba
@Malabarba Este es el segundo que he visto :)
Kaushal Modi

Respuestas:

10

Aquí hay una configuración simple que puede modificar que le permite sincronizar orgarchivos a su Raspberry Pi, en función de su script bash (no probado, por supuesto, porque no tengo ni Pi ni su script). Modifique la función con su nombre de script. Se utiliza shell-command-to-stringpara poner la salida de la línea de comando en algún lugar; también podría usarlo shell-commandsi eso no es una preocupación.

Luego puede agregarlo a after-save-hook, como lo sugirió el comentario de @ IqbalAnsari.

(defun sync-to-pi ()
  "Sync org file to Raspberry Pi with external script."
  (when (eq major-mode 'org-mode)
    (shell-command-to-string (format "your-script-name %s" buffer-file-name))))

(add-hook 'after-save-hook #'sync-to-pi)
Dan
fuente