Caractère générique dans les fichiers org-agenda


10

J'ai un dossier de base du projet, ~/prjà l' intérieur duquel j'ai beaucoup de projets, 2014_prj1, 2014_prj2, ..., à l' intérieur dont j'ai, entre autres, un docdossier. La disposition ressemble à ceci:

~/prj
~/prj/2014_prj1
~/prj/2014_prj1/README.org
~/prj/2014_prj1/data
~/prj/2014_prj1/doc
~/prj/2014_prj2
~/prj/2014_prj2/README.org
~/prj/2014_prj2/data
~/prj/2014_prj2/doc

J'aimerais maintenant ajouter tous les répertoires de projet ( 2014_prjX) à org-agenda-files, ainsi que tous les docsous-répertoires des répertoires de projet. Les datadossiers ne doivent pas en faire partie org-agenda-files, car ils peuvent éventuellement contenir 10000 fichiers.

Comment puis-je atteindre cet objectif? J'ai essayé un simple

(setq org-agenda-files (quote ("~/doc/notes"
                               "~/.emacs.d"
                               "~/prj/*/doc"
                               )
                        )

mais cela me donne l'erreur

Non-existing agenda file ~/prj/*/doc

Réponses:


19

Vous pouvez utiliser la fonction file-expand-wildcardspour obtenir tous les fichiers correspondant au caractère générique et les ajouter à la org-agenda-filesvariable. Quelque chose comme ce qui suit

(setq org-agenda-files (append '("~/doc/notes" "~/.emacs.d") (file-expand-wildcards "~/prj/*/doc")))

Existe-t-il un hook qui permettrait de calculer dynamiquement l'ensemble de fichiers? Par exemple, si j'ajoute un nouveau .orgfichier après avoir démarré emacs, j'aimerais quand même qu'il fasse partie de org-agenda-files.
John Wiseman

1

J'ai créé une approche plus générique, qui vous permet d'avoir une imbrication plus profonde. Par exemple, j'ai une riche arborescence de notes et certains dossiers contiennent un fichier tasks.org. Ce code collectera toute la mouche:

(defun set-org-agenda-files ()
  (require 'f)
  (require 's)

  (setq org-agenda-files
    (f-entries org-directory
               (lambda (filename)
                 (s-ends-with-p "/tasks.org" filename))
               t)))
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.