Platzhalter in org-Agenda-Dateien


10

Ich habe ein Projekt Basisordner, ~/prjinnerhalb von denen ich viele einzelne Projekte haben 2014_prj1, 2014_prj2..., in deren Innerem die ich habe, unter anderem einen docOrdner. Das Layout sieht folgendermaßen aus:

~/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

Jetzt möchte ich alle Projektverzeichnisse ( 2014_prjX) org-agenda-filessowie alle docUnterverzeichnisse der Projektverzeichnisse hinzufügen . Die dataOrdner sollten nicht Teil von sein org-agenda-files, da sie möglicherweise 10000 Dateien enthalten können.

Wie kann ich das erreichen? Ich habe es einfach versucht

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

aber das gibt mir den fehler

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

Antworten:


19

Mit der Funktion können file-expand-wildcardsSie alle Dateien, die mit dem Platzhalter übereinstimmen, zur org-agenda-filesVariablen hinzufügen . So etwas wie das Folgende

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

Gibt es einen Hook, mit dem die Dateigruppe dynamisch berechnet werden kann? Wenn ich beispielsweise .orgnach dem Start von emacs eine neue Datei hinzufüge , möchte ich, dass diese weiterhin Teil von ist org-agenda-files.
John Wiseman

1

Ich habe einen allgemeineren Ansatz entwickelt, der es Ihnen ermöglicht, tiefer zu verschachteln. Zum Beispiel habe ich einen reichhaltigen Baum von Notizen und einige Ordner enthalten die Datei task.org. Dieser Code sammelt die gesamte Fliege:

(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)))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.