Esiste un modo semplice per utilizzare tutti i file org a cui fa riferimento un file principale per la tabella di orologio in modalità org


9

Sto usando la modalità org per tenere traccia del tempo che passo a vari progetti. Ho un file org principale e altri due per due grandi progetti a cui sto lavorando. Tutti e tre sono elencati in org-agenda-files. Ho creato una tabella di clock nel file org principale e impostato

:scope agenda-with-archives

nell'intestazione dell'orologio per riepilogare il tempo trascorso. Funziona tutto bene.

Tuttavia, ho anche alcuni progetti più piccoli che hanno anche il tempo monitorato nel loro file org (situato nella sottodirectory che contiene tutto ciò che riguarda quei progetti), e mi piacerebbe tenere traccia del tempo anche in quelli.

Ovviamente potrei aggiungere quei file a org-agenda-files, ma ciò significherebbe aggiornare il mio .emacsogni volta che avvio un nuovo piccolo progetto. Ovviamente non è la fine del mondo, ma dato che ho già un link ai file-project-org-file nel file org principale (vedi esempio sotto), mi piacerebbe impostare :scopequalcosa come

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

Idealmente (anche se non lo sto ancora usando), includere file di archivio di quei progetti più piccoli sarebbe fantastico (qualcosa del genere :scope linked-org-files-with-archives).

Ecco un esempio di come è strutturato il mio file org principale:

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

Qualche idea su come raggiungere questo obiettivo?

Risposte:


6

Puoi usare

:scope some-function

dove la funzione some-functionrestituisce l'elenco richiesto di file. Per esempio:

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

o

(defun some-function ()
  (append org-agenda-files
          (file-expand-wildcards "your-path/*.org")))

(defun some-function () org-agenda-files)con :scope (some-function)non funziona per me e non è menzionato nei documenti. È ancora supportato?
avv.

Quale versione di org-mode usi? Si è verificato un errore?
Artscan

1
Lisp error: (wrong-type-argument stringp some-function). Modalità Org versione 9.0.7
avv

Modificato per correggere la linea di portata - che dovrebbe correggere gli errori lisp.
NickD

3

Ho avuto problemi anche con questo.

La risposta di @ artscan mi ha indicato la giusta direzione, ma restituisce un argument typeerrore. Eliminare le parentesi risolve il problema.

Commenterei la risposta di Artscan, ma non ho abbastanza reputazione.

Per riassumere, quindi, ecco cosa uso:

Nella tabella, fornire :scope efls/org-files-productive. Nessuna parentesi. Definire una semplice funzione per restituire una stringa di file.

Ad esempio, uso qualcosa del genere:

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

Si potrebbe, naturalmente, anche semplicemente digitare in un elenco di file dopo :scope, ma poi fare parentesi necessità che racchiudono la lista: scope: ("Users/efls/org/file1.org" "…").

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.