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
andreas-h
la source

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")))
Iqbal Ansari
la source
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)))
Alexander Artemenko
la source