Gibt es eine einfache Möglichkeit, alle Organisationsdateien, auf die in einer Hauptdatei verwiesen wird, für die Uhrentabelle im Organisationsmodus zu verwenden?

9

Ich verwende den Organisationsmodus, um die Zeit zu verfolgen, die ich für verschiedene Projekte aufgewendet habe. Ich habe eine Hauptorganisationsdatei und zwei weitere für zwei große Projekte, an denen ich arbeite. Alle drei sind in aufgeführt org-agenda-files. Ich habe eine Uhrentabelle in der Hauptorganisationsdatei erstellt und festgelegt

:scope agenda-with-archives

in der übersichtbaren Kopfzeile, um die aufgewendete Zeit zusammenzufassen. Das alles funktioniert gut.

Ich habe jedoch auch einige kleinere Projekte, deren Zeit in ihrer eigenen Organisationsdatei (im Unterverzeichnis, das alles über diese Projekte enthält) aufgezeichnet wurde, und ich möchte auch die Zeit in diesen verfolgen.

Natürlich könnte ich diese Dateien hinzufügen org-agenda-files, aber das würde bedeuten, dass .emacsich meine Dateien jedes Mal aktualisiere, wenn ich ein neues kleines Projekt starte. Natürlich nicht das Ende der Welt, aber da ich bereits einen Link zu den kleinen Projekt-Organisationsdateien in der Haupt-Organisationsdatei habe (siehe Beispiel unten), möchte ich das :scopeauf so etwas setzen

:scope agenda-with-archives linked-org-files

Idealerweise (obwohl ich das noch nicht benutze) wäre es großartig, Archivdateien dieser kleineren Projekte einzuschließen (so etwas wie :scope linked-org-files-with-archives).

Hier ist ein Beispiel für die Struktur meiner Hauptorganisationsdatei:

* Small project 1
  See file:~/Projects/Project 1/notes_project_1.org for more details.
* Small project 2
  See file:~/Projects/Project 2/notes_project_2.org.
** DONE Some small task I can do quickly
   CLOCK: [2014-12-05 vr 12:19]--[2014-12-05 vr 12:40] =>  0:21
   Some info on the small task.

Irgendeine Idee, wie dies erreicht werden kann?

ph0t0nix
quelle

Antworten:

6

Sie können verwenden

:scope some-function

Dabei some-functiongibt die Funktion die erforderliche Liste der Dateien zurück. Beispielsweise:

(defun some-function () org-agenda-files)

oder

(defun some-function ()
  (append org-agenda-files
          (file-expand-wildcards "your-path/*.org")))
artscan
quelle
(defun some-function () org-agenda-files)mit :scope (some-function)funktioniert bei mir nicht und wird in den Dokumenten nicht erwähnt. Wird es noch unterstützt?
avv
Welche Version des Org-Modus verwenden Sie? Wird ein Fehler generiert?
Artscan
1
Lisp error: (wrong-type-argument stringp some-function). Org-Modus Version 9.0.7
avv
Bearbeitet, um die Bereichslinie zu korrigieren - das sollte die Lisp-Fehler beheben.
NickD
3

Ich habe auch Probleme damit.

Die Antwort von @ artscan hat mich in die richtige Richtung gelenkt, gibt aber einen argument typeFehler zurück. Das Löschen der Klammern löst das Problem.

Ich würde die Antwort von artscan kommentieren, aber ich habe nicht genug Ruf.

Zusammenfassend verwende ich also Folgendes:

Geben Sie in der Tabelle an :scope efls/org-files-productive. Keine Klammern. Definieren Sie eine einfache Funktion, um eine Zeichenfolge von Dateien zurückzugeben.

Zum Beispiel benutze ich so etwas:

(defun efls/org-files-productive ()
 "Return productive org files."
 '("/Users/efls/org/file1.org" "/Users/efls/org/file2.org" "/Users/efls/org/file3.org"))

Sie könnten natürlich, geben Sie auch einfach in einer Liste von Dateien nach :scope, aber dann Sie tun müssen Klammern die Liste umschließenden: scope: ("Users/efls/org/file1.org" "…").

EFLS
quelle