有没有一种简单的方法可以将主文件中引用的所有组织文件用于组织模式时钟表


9

我正在使用组织模式来跟踪我在各种项目上花费的时间。我有一个主要的组织文件,还有两个用于我正在处理的大型项目的文件。这三个都列在中org-agenda-files。我在主组织文件中创建了一个时钟表并进行设置

:scope agenda-with-archives

在Clocktable标头中以汇总花费的时间。这一切都很好。

但是,我还有一些较小的项目,它们在自己的org文件(位于包含有关那些项目的所有内容的子目录中)中也有时间跟踪,我也想在其中跟踪时间。

当然,我可以将这些文件添加到中org-agenda-files,但这意味着.emacs每次我开始一个新的小项目时都要更新。当然,世界上没有结束,但因为我已经在主要组织文件的链接,以小项目的组织-文件(见下面的例子),我想设置:scope成类似

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

理想情况下(尽管我还没有使用过),包括那些较小项目的归档文件将非常适合(类似:scope linked-org-files-with-archives)。

这是我的主要组织文件的结构示例:

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

关于如何实现这一点的任何想法?

Answers:


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)没有适合我的工作,并在文档中没有提及。仍然受支持吗?
AVV

您使用哪个版本的组织模式?是否产生任何错误?
artscan

1
Lisp error: (wrong-type-argument stringp some-function)。机构模式版本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" "…")

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.