Czy istnieje prosty sposób na użycie wszystkich plików org wymienionych w głównym pliku tabeli zegarowej trybu org

9

Używam trybu org do śledzenia czasu, który spędzam na różnych projektach. Mam jeden główny plik organizacji i dwa dla dwóch dużych projektów, nad którymi pracuję. Wszystkie trzy są wymienione w org-agenda-files. Utworzyłem tabelę zegara w głównym pliku org i ustawiłem

:scope agenda-with-archives

w nagłówku tabeli zegara, aby podsumować spędzony czas. To wszystko działa dobrze.

Mam też kilka mniejszych projektów, które również śledzą czas w swoim własnym pliku org (znajdującym się w podkatalogu zawierającym wszystko o tych projektach), i chciałbym również śledzić czas w tych.

Oczywiście mógłbym dodać te pliki org-agenda-files, ale oznaczałoby to aktualizację moich za .emacskażdym razem, gdy rozpoczynam nowy mały projekt. Oczywiście nie koniec świata, ale ponieważ mam już link do plików małych projektów org w głównym pliku org (patrz przykład poniżej), chciałbym ustawić :scopecoś w rodzaju

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

Idealnie (choć jeszcze tego nie używam), w tym pliki archiwalne tych mniejszych projektów byłyby świetne (coś w stylu :scope linked-org-files-with-archives).

Oto przykład struktury mojego głównego pliku org:

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

Masz pomysł, jak to osiągnąć?

ph0t0nix
źródło

Odpowiedzi:

6

Możesz użyć

:scope some-function

gdzie funkcja some-functionzwraca wymaganą listę plików. Na przykład:

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

lub

(defun some-function ()
  (append org-agenda-files
          (file-expand-wildcards "your-path/*.org")))
Artscan
źródło
(defun some-function () org-agenda-files)z :scope (some-function)nie działa dla mnie i nie jest wspomniany w dokumentacji. Czy nadal jest obsługiwany?
avv
Z jakiej wersji trybu org korzystasz? Czy generowany jest błąd?
artscan
1
Lisp error: (wrong-type-argument stringp some-function). Tryb organizacji wersja 9.0.7
avv
Edytowane, aby naprawić linię zasięgu - to powinno naprawić błędy lisp.
NickD
3

Mam z tym również problem.

Odpowiedź @ artscan wskazała mi właściwy kierunek, ale zwraca argument typebłąd. Upuszczenie nawiasów rozwiązuje problem.

Chciałbym skomentować odpowiedź Artscan, ale nie mam wystarczającej reputacji.

Podsumowując, oto, czego używam:

W tabeli podaj :scope efls/org-files-productive. Bez nawiasów. Zdefiniuj prostą funkcję zwracającą ciąg plików.

Na przykład używam czegoś takiego:

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

Możesz, oczywiście, także wystarczy wpisać na listę plików po :scope, ale potem można zrobić nawiasów potrzebę załączając listę: scope: ("Users/efls/org/file1.org" "…").

EFLS
źródło