Wykonać zewnętrzny skrypt po zapisaniu w określonym trybie?

12

Kiedy jestem w org-modeśrodku, chcę, aby Emacs wykonał skrypt bash, który napisałem za każdym razem, gdy uderzę, C-x saby zapisać. Skrypt automatycznie synchronizuje plik, który zapisuję, z moim Raspberry Pi. Oczekuje nazwy pliku jako argumentu.

Jak powiedzieć Emacsowi, aby orgpodczas zapisywania uruchamiał zewnętrzny skrypt na plikach?

qacwnfq q
źródło
4
Możesz użyć after-save-hookdo uruchomienia skryptu
Iqbal Ansari
Czy to nasz pierwszy imigrant? :-)
Malabarba,
@Malabarba To już drugi raz widziałem :)
Kaushal Modi

Odpowiedzi:

11

Oto prosta konfiguracja, którą możesz zmodyfikować, która pozwala zsynchronizować orgpliki z Raspberry Pi na podstawie skryptu bash (oczywiście niesprawdzone, ponieważ nie mam ani Pi, ani skryptu). Zmodyfikuj funkcję za pomocą nazwy skryptu. Służy shell-command-to-stringdo umieszczenia gdzieś wyjścia wiersza poleceń; możesz także użyć, shell-commandjeśli nie jest to problemem.

Możesz go następnie dodać after-save-hook, jak sugerował komentarz @ 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
źródło