Enchevêtrer automatiquement les fichiers org dans un répertoire spécifique

9

Je convertis mes fichiers dot en fichiers org-babel parce que j'ai vraiment apprécié réécrire ma configuration Emacs dedans, et j'ai une fonction pour le init.orgqui s'emmêle automatiquement chaque fois que j'enregistre. Cependant, je n'ai pas réussi à faire en sorte que les .orgfichiers ~/.dotfilesfassent de même automatiquement. J'ai actuellement cette fonction:

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

Cependant, cela ne fonctionne que pour le fichier spécifique que je nomme, pas pour n'importe quel fichier org. L'utilisation *.orgne fonctionne pas non plus, et je n'ai pas compris comment extraire le nom du répertoire à la fois du tampon et du répertoire et le faire de cette façon.

J'ai aussi posé des questions sur les #emacs sur Freenode mais personne ne m'a répondu là-bas. Toute aide ou pointeur sur où commencer serait très apprécié.

Sondre Nilsen
la source

Réponses:

9

J'ai compris comment le faire:

(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
la source