Caricamento di tutti i file org in una cartella sull'agenda


6

Ho trovato un tutorial di org dove viene spiegato come caricare i file org da una cartella, usando

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

Domanda

C'è un modo per dire ad emacs di caricare tutti i file org su una determinata cartella nell'agenda?

Risposte:


6

Usando la modalità Org inclusa in Emacs 24.3, da 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.

E da 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.

Quindi, in breve: valutare (add-to-list 'org-agenda-files (expand-file-name "~/org")) e, se il tuo org-agenda-file-regexp è al valore predefinito, la modalità Org leggerà gli oggetti dell'agenda da qualsiasi file in ~/org il cui nome finisce in .org. (Se tuo org-agenda-file-regexp non è al valore di default, o se ne hai bisogno per abbinare più che solo i file il cui nome finisce in .org, quindi personalizzalo in base alle tue esigenze tramite M-x customize-variable RET org-agenda-file-regexp RET.)


Grazie per la risposta @ aaron-miller. Sto usando GNU Emacs 23.4.1 con la versione 8.0.7 di Org-mode. Ho trovato il org-agenda-files comando, e C-h v org-agenda-file-regexp è definito come dici tu. Tuttavia ricevo un avvertimento dopo aver aggiunto la riga di codice che suggerisci. qualche idea? Devo ancora lasciare la mia linea precedente o cancellarla?
Dox

L'ho risolto! Grazie per il tuo aiuto. La mia soluzione era includere la linea (setq org-agenda-files (list "~/org/")) nel mio .emacs file. Saluti.
Dox

2
@Dox Questa è solo una mezza soluzione, tuttavia, in quanto si aggiungerà a org-agenda-files solo quei file presenti in ~/org nel momento in cui viene valutata l'espressione, ovvero se si aggiunge un nuovo file durante la sessione di Emacs, non verrà automaticamente rilevato come una fonte di elementi dell'ordine del giorno fino al successivo avvio di Emacs. Certo, se questo è sufficiente per le tue esigenze, allora fallo, ma vale la pena menzionarlo org-agenda-file-regexpe la gestione speciale delle directory in org-agenda-files, esiste per una ragione. :)
Aaron Miller

2
@Dox Va bene! Supponendo che tutti i tuoi file Org siano dentro ~/org e finisci dentro .org, tutto ciò che devi fare è aggiungere (add-to-list 'org-agenda-files (expand-file-name "~/org")) nel tuo file init da qualche parte, e le nuove sessioni di Emacs analizzeranno automaticamente tutti i tuoi file Org per gli oggetti dell'agenda. (Puoi fare lo stesso effetto nella tua sessione di Emacs già esistente C-x C-e mentre il punto è sul paren di chiusura dell'espressione; quindi, per vedere l'effetto, fai ad es. M-x org-agenda RET t.)
Aaron Miller

1
@Dox BTW expand-file-name canonicalizza la sua argomentazione, in questo caso espandendo il ~ al tuo percorso di directory home completo; non tutte le funzioni di Emacs Lisp che accettano un argomento di percorso eseguono la propria canonizzazione, quindi è utile farlo a mano. C-x C-e fa eval-last-sexp, che valuta il modulo Lisp immediatamente dietro il punto - utile quando si modificano i file init, ad esempio, per testare l'effetto di una modifica e ottenere il vantaggio senza dover riavviare Emacs o M-x eval-buffer.
Aaron Miller

5

Ispirato alla risposta data da Aaron, cambio la mia configurazione in

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

e il problema è stato risolto.

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.