Existe-t-il un moyen simple d'utiliser tous les fichiers org référencés dans un fichier principal pour la table d'horloge en mode org

9

J'utilise le mode organisationnel pour suivre le temps que je passe sur divers projets. J'ai un fichier org principal et deux autres pour deux grands projets sur lesquels je travaille. Les trois sont répertoriés dans org-agenda-files. J'ai créé une table d'horloge dans le fichier org principal et défini

:scope agenda-with-archives

dans l'en-tête de la table d'horloge pour résumer le temps passé. Tout fonctionne bien.

Cependant, j'ai également quelques petits projets qui ont également un suivi du temps dans leur propre fichier org (situé dans le sous-répertoire qui contient tout ce qui concerne ces projets), et j'aimerais également suivre le temps dans ceux-ci.

Bien sûr, je pourrais ajouter ces fichiers org-agenda-files, mais cela signifierait une mise à jour à .emacschaque fois que je lance un nouveau petit projet. Ce n'est pas la fin du monde bien sûr, mais comme j'ai déjà un lien vers les petits fichiers org du projet dans le fichier org principal (voir l'exemple ci-dessous), je voudrais définir :scopequelque chose comme

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

Idéalement (bien que je ne l'utilise pas encore), y compris des fichiers d'archives de ces petits projets serait génial (quelque chose comme :scope linked-org-files-with-archives).

Voici un exemple de la structure de mon fichier org principal:

* 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.

Une idée sur la façon d'y parvenir?

ph0t0nix
la source

Réponses:

6

Vous pouvez utiliser

:scope some-function

où la fonction some-functionrenvoie la liste requise des fichiers. Par exemple:

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

ou

(defun some-function ()
  (append org-agenda-files
          (file-expand-wildcards "your-path/*.org")))
artscan
la source
(defun some-function () org-agenda-files)avec :scope (some-function)ne fonctionne pas pour moi et n'est pas mentionné dans les documents. Est-il toujours pris en charge?
AVV
Quelle version du mode organisation utilisez-vous? Une erreur est-elle générée?
artscan
1
Lisp error: (wrong-type-argument stringp some-function). Version en mode Org 9.0.7
AVV
Modifié pour corriger la ligne de portée - cela devrait corriger les erreurs de lisp.
NickD
3

J'ai aussi eu des problèmes avec ça.

La réponse de @ artscan m'a orienté dans la bonne direction, mais renvoie une argument typeerreur. La suppression des parenthèses résout le problème.

Je commenterais la réponse d'artscan, mais je n'ai pas assez de réputation.

Pour résumer, voici donc ce que j'utilise:

Dans le tableau, fournissez :scope efls/org-files-productive. Pas de parenthèses. Définissez une fonction simple pour renvoyer une chaîne de fichiers.

Par exemple, j'utilise quelque chose comme ceci:

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

Vous pouvez, bien sûr, aussi taper simplement dans une liste de fichiers après :scope, mais vous ne parenthèses besoin enserrant la liste: scope: ("Users/efls/org/file1.org" "…").

EFLS
la source