Laden aller org-Dateien in einem Ordner in die Agenda

5078
Dox

Ich habe ein Org-Tutorial gefunden, in dem erklärt wird, wie Org-Dateien aus einem Ordner geladen werden

(setq org-agenda-files (list "~/org/work.org" "~/org/school.org"  "~/org/home.org")) 

Frage

Gibt es eine Möglichkeit, emacs mitzuteilen, alle org-Dateien eines bestimmten Ordners in die Agenda zu laden?

6

2 Antworten auf die Frage

6
Aaron Miller

Verwenden des in Emacs 24.3 enthaltenen Org-Modus von C-h v org-agenda-files RET:

If an entry is a directory, all files in that directory that are matched by `org-agenda-file-regexp' will be part of the file list. 

Und von C-h v org-agenda-file-regexp RET:

org-agenda-file-regexp is a variable defined in 'org.el'. Its value is "\\`[^.].*\\.org\\'" [...] You can customize this variable. 

Kurz gesagt: werten Sie aus (add-to-list 'org-agenda-files (expand-file-name "~/org"))und wenn Sie org-agenda-file-regexpden Standardwert haben, liest der Org-Modus Tagesordnungspunkte aus allen Dateien, ~/orgderen Name auf endet .org. (Wenn Sie org-agenda-file-regexpnicht den Standardwert verwenden oder wenn Sie mehr als nur Dateien suchen müssen, deren Namen enden .org, dann passen Sie sie über M-x customize-variable RET org-agenda-file-regexp RET. An.)

Vielen Dank für die Antwort @ aaron-miller. Ich verwende GNU Emacs 23.4.1 mit der Org-Modus-Version 8.0.7. Ich habe den Befehl "org-agenda-files" gefunden, und "Ch v org-agenda-file-regexp" ist wie beschrieben definiert. Nach dem Hinzufügen der von Ihnen vorgeschlagenen Codezeile wird jedoch eine Warnung angezeigt. Irgendwelche Gedanken? Soll ich meine vorherige Zeile noch verlassen oder löschen? Dox vor 11 Jahren 0
Ich habe es gelöst! Danke für Ihre Hilfe. Meine Lösung bestand darin, die Zeile `(setq org-agenda-files (list" ~ / org / "))` in meine `.emacs'-Datei aufzunehmen. Prost. Dox vor 11 Jahren 0
@Dox Das ist jedoch nur eine halbe Lösung, da `org-agenda-files` nur die Dateien hinzugefügt wird, die zum Zeitpunkt der Auswertung des Ausdrucks in ~ / org vorhanden sind - das heißt, wenn Sie einen neuen hinzufügen Während der Emacs-Sitzung wird die Datei nicht automatisch als Quelle für Tagesordnungspunkte abgerufen, bis Sie das nächste Mal Emacs starten. Wenn dies für Ihre Bedürfnisse ausreicht, sollten Sie dies natürlich tun, aber es ist erwähnenswert, dass `org-agenda-file-regexp` und die spezielle Behandlung von Verzeichnissen in` org-agenda-files 'aus einem bestimmten Grund existieren. :) Aaron Miller vor 11 Jahren 2
Könnten Sie ein Beispiel für die Lösung geben? Ich überprüfe und der `org-agenda-file-regexp` ist auf den Standardwert gesetzt, aber Sie haben Recht mit dem Laden. Dox vor 11 Jahren 0
@Dox Das ist gut! Vorausgesetzt, alle Ihre Org-Dateien befinden sich in `~ / org` und enden mit` .org`. Alles, was Sie tun müssen, ist das Hinzufügen von ((add-to-list) org-agenda-files (expand-Dateiname "~ / org "))` irgendwo in Ihre Init-Datei, und neue Emacs-Sitzungen werden automatisch alle Ihre Org-Dateien nach Tagesordnungspunkten durchsuchen. (Sie können den gleichen Effekt in Ihrer bestehenden Emacs-Sitzung erzielen, indem Sie "Cx Ce" ausführen, während der Punkt auf dem abschließenden Punkt des Ausdrucks steht; wenn Sie den Effekt sehen möchten, führen Sie zB "Mx org-agenda RET t" aus.) Aaron Miller vor 11 Jahren 2
@Dox BTW `expand-file-name` kanonisiert sein Argument, in diesem Fall durch Erweitern von` ~ `auf den vollständigen Pfad des Basisverzeichnisses. Nicht jede Emacs-Lisp-Funktion, für die ein Pfadargument verwendet wird, führt ihre eigene Kanonisierung durch, daher ist es nützlich, dies von Hand zu tun. `Cx Ce` macht` eval-last-sexp`, was die Lisp-Form unmittelbar hinter Punkt auswertet. Dies ist nützlich, wenn Sie zum Beispiel Init-Dateien bearbeiten, um die Auswirkungen einer Änderung zu testen und den Nutzen zu erzielen, ohne dass dies erforderlich ist Starten Sie Emacs oder 'Mx Eval-Buffer' neu. Aaron Miller vor 11 Jahren 1
Lasst uns [diese Diskussion im Chat fortsetzen] (http://chat.stackexchange.com/rooms/10210/discussion-between-dox-and-aaron-miller) Dox vor 11 Jahren 0
4
Dox

Inspiriert von der Antwort von Aaron, ändere ich meine Konfiguration in

(setq org-agenda-files (list "~/org")) 

und das Problem wurde gelöst.