Emaranhar automaticamente arquivos organizacionais em um diretório específico

9

Estou convertendo meus dotfiles em arquivos org-babel porque realmente gostei de reescrever minha configuração do Emacs nela, e tenho uma função para init.orgisso que a emaranha automaticamente sempre que eu salvo. No entanto, não consegui fazer com que os .orgarquivos digam ~/.dotfilesque façam o mesmo automaticamente. Eu tenho esta função atualmente:

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

No entanto, isso funciona apenas para o arquivo específico que eu nomeio, não para qualquer arquivo organizacional. O uso *.orgtambém não funciona, nem descobri como extrair o nome do diretório do buffer e do diretório e fazê-lo dessa maneira.

Também perguntei no #emacs no Freenode, mas ninguém me respondeu lá. Qualquer ajuda ou indicação de onde começar seria muito apreciada.

Sondre Nilsen
fonte

Respostas:

9

Eu descobri como fazê-lo:

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