Externes Skript beim Speichern in einem bestimmten Modus ausführen?

12

Wenn ich dabei bin org-mode, möchte ich, dass Emacs ein Bash-Skript ausführt, das ich geschrieben habe, wenn ich C-x szum Speichern drücke. Das Skript synchronisiert automatisch die Datei, die ich speichere, auf meinen Raspberry Pi. Es erwartet den Dateinamen als Argument.

Wie kann ich Emacs anweisen, das externe Skript für orgDateien auszuführen, wenn ich speichere?

qacwnfq q
quelle
4
Sie können after-save-hookdas Skript ausführen
Iqbal Ansari
Ist das unser erster Einwanderer? :-)
Malabarba
@ Malabarba Dies ist die zweite, die ich gesehen habe :)
Kaushal Modi

Antworten:

10

Hier ist ein einfaches Setup, das Sie ändern können, um orgDateien mit Ihrem Raspberry Pi zu synchronisieren , basierend auf Ihrem Bash-Skript (ungetestet, natürlich, da ich weder ein Pi noch Ihr Skript habe). Ändern Sie die Funktion mit Ihrem Skriptnamen. Es wird verwendet shell-command-to-string, um die Befehlszeilenausgabe irgendwo abzulegen. Sie könnten auch nur verwenden, shell-commandwenn das kein Problem ist.

Sie können es dann hinzufügen after-save-hook, wie in @ IqbalAnsaris Kommentar vorgeschlagen.

(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
quelle