Secara otomatis kusut file org di direktori tertentu

9

Saya mengonversi dotfile saya ke file org-babel karena saya benar-benar menikmati menulis ulang konfigurasi Emacs saya di dalamnya, dan saya memiliki fungsi untuk init.orgyang secara otomatis kusut setiap kali saya simpan. Namun, saya belum berhasil membuat .orgfile di katakan ~/.dotfilesuntuk melakukan hal yang sama secara otomatis. Saya memiliki fungsi ini saat ini:

(defun my/tangle-dotfiles ()
  "If the current file is in '~/.dotfiles', the code blocks are tangled"
  (when (equal (buffer-file-name)
               (expand-file-name "~/.dotfiles/tmux.org"))
    (org-babel-tangle)
    (message "Dotfile tangled")))

(add-hook 'after-save-hook #'my/tangle-dotfiles)

Namun, ini hanya berfungsi untuk file spesifik yang saya beri nama, bukan untuk file org. Menggunakan *.orgtidak berfungsi, saya juga tidak tahu cara mengekstrak nama direktori dari buffer dan direktori dan melakukannya dengan cara itu.

Saya juga bertanya pada #emacs di Freenode tetapi tidak ada yang menjawab saya di sana. Bantuan atau petunjuk apa pun untuk memulai akan sangat dihargai.

Sondre Nilsen
sumber

Jawaban:

9

Saya menemukan cara untuk melakukannya:

(defun my/tangle-dotfiles ()
  "If the current file is in '~/.dotfiles', the code blocks are tangled"
  (when (equal (file-name-directory (directory-file-name buffer-file-name))
               (concat (getenv "HOME") "/.dotfiles/"))
    (org-babel-tangle)
    (message "%s tangled" buffer-file-name)))

(add-hook 'after-save-hook #'my/tangle-dotfiles)
Sondre Nilsen
sumber