Есть ли простой способ использовать все org-файлы, на которые есть ссылки в главном файле для таблицы часов режима org

9

Я использую режим орг, чтобы отслеживать время, которое я трачу на различные проекты. У меня есть один основной файл org и еще два для двух больших проектов, над которыми я работаю. Все три перечислены в org-agenda-files. Я создал таблицу часов в основном орг-файле и установил

:scope agenda-with-archives

в заголовке таблицы, чтобы подвести итог затраченного времени. Это все отлично работает.

Тем не менее, у меня также есть несколько небольших проектов, которые также отслеживают время в своем собственном орг-файле (расположенном в подкаталоге, который содержит все об этих проектах), и я также хотел бы отслеживать время в них.

Конечно, я мог бы добавить эти файлы org-agenda-files, но это означало бы обновлять мой .emacsкаждый раз, когда я начинаю новый небольшой проект. Конечно, не конец света, но так как у меня уже есть ссылка на файлы small-project-org в главном файле org (см. Пример ниже), я хотел бы установить что- :scopeто вроде

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

В идеале (хотя я еще не использую это), включая архивные файлы этих небольших проектов, было бы здорово (что-то вроде :scope linked-org-files-with-archives).

Вот пример того, как структурирован мой основной файл 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.

Есть идеи, как этого добиться?

ph0t0nix
источник

Ответы:

6

Ты можешь использовать

:scope some-function

где функция some-functionвозвращает требуемый список файлов. Например:

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

или

(defun some-function ()
  (append org-agenda-files
          (file-expand-wildcards "your-path/*.org")))
artscan
источник
(defun some-function () org-agenda-files)с :scope (some-function)не работает для меня, и не упоминается в документах. Это все еще поддерживается?
АВВ
Какую версию орг-режима вы используете? Любая ошибка генерируется?
artcan
1
Lisp error: (wrong-type-argument stringp some-function), Org режим версия 9.0.7
АВВ
Отредактировано, чтобы исправить линию области видимости - это должно исправить ошибки lisp.
NickD
3

У меня тоже были проблемы с этим.

Ответ @ artscan указал мне верное направление, но возвращает argument typeошибку. Удаление скобок решает проблему.

Я бы прокомментировал ответ Artscan, но мне не хватает репутации.

Подводя итог, вот что я использую:

В таблице укажите :scope efls/org-files-productive. Нет скобок. Определите простую функцию для возврата строки файлов.

Например, я использую что-то вроде этого:

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

Можно, конечно, и просто наберите в списке файлов после :scope, но тогда вам сделать нужно круглые скобки заключающие список: scope: ("Users/efls/org/file1.org" "…").

EFLs
источник