Enredar automáticamente archivos de organización en un directorio específico


9

Estoy convirtiendo mis dotfiles en archivos org-babel porque realmente disfruté reescribir mi configuración de Emacs, y tengo una función para init.orgque se enrede automáticamente cada vez que guardo. Sin embargo, no he tenido éxito en hacer que los .orgarchivos en say ~/.dotfileshagan lo mismo automáticamente. Tengo esta función actualmente:

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

Sin embargo, esto solo funciona para el archivo específico que nombre, no para ningún archivo de organización. El uso *.orgtampoco funciona, ni he descubierto cómo extraer el nombre del directorio tanto del búfer como del directorio y hacerlo de esa manera.

También pregunté por los #emacs en Freenode pero nadie me respondió allí. Cualquier ayuda o puntero sobre dónde comenzar sería muy apreciada.

Respuestas:


9

Descubrí cómo hacerlo:

(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)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.