Чи є простий спосіб використовувати всі org-файли, на які посилається в головному файлі, для тактової таблиці org-mode


9

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

:scope agenda-with-archives

у заголовку годинника, щоб узагальнити витрачений час. Це все добре працює.

Однак у мене також є кілька менших проектів, які також відслідковуються у власному файлі org (розташованому у підкаталозі, що містить усе про ці проекти), і я хотів би також відстежувати час.

Звичайно, я міг би додати ці файли org-agenda-files, але це означатиме оновлення .emacsкожного разу, коли я починаю новий невеликий проект. Звичайно, не кінець світу, але оскільки у мене вже є посилання на файли малого проекту-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.

Будь-яка ідея, як цього досягти?

Відповіді:


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")))

(defun some-function () org-agenda-files)з :scope (some-function)не працює для мене і не згадується в документах. Чи все ще підтримується?
АВВ

Яку версію org-mode ви використовуєте? Чи генерується якась помилка?
artcan

1
Lisp error: (wrong-type-argument stringp some-function). Org mode version 9.0.7
avv

Відредаговано для виправлення рядка області - це повинно виправити помилки 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" "…").

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.