Выполнить внешний скрипт при сохранении в определенном режиме?

12

Когда я вхожу org-mode, я хочу, чтобы Emacs выполнял скрипт bash, который я написал, когда нажимал, C-x sчтобы сохранить. Сценарий автоматически синхронизирует файл, который я сохраняю в Raspberry Pi. Ожидает имя файла в качестве аргумента.

Как мне сказать Emacs запускать внешний скрипт для orgфайлов при сохранении?

qacwnfq q
источник
4
Вы можете использовать after-save-hookдля запуска сценария
Икбал Ансари
Это наш первый иммигрант? :-)
Малабарба
@Malabarba Это второе, что я видел :)
Kaushal Modi

Ответы:

10

Вот простая настройка, которую вы можете изменить, которая позволяет синхронизировать orgфайлы с вашим Raspberry Pi на основе вашего скрипта bash (конечно, не проверено, потому что у меня нет ни Pi, ни вашего скрипта). Измените функцию с вашим именем скрипта. Он использует shell-command-to-stringгде-то вывод командной строки; Вы также можете просто использовать, shell-commandесли это не проблема.

Затем вы можете добавить его after-save-hookв соответствии с предложенным комментарием @ 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)
Дэн
источник