将文件夹中的所有组织文件加载到议程


8

我找到了一个组织教程,其中说明了如何使用文件夹从文件夹加载组织文件

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

有没有办法告诉emacs将给定文件夹中的所有组织文件加载到议程中?

Answers:


8

受到亚伦(Aaron)给出的答案的启发,我将配置更改为

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

问题解决了。


6

使用Emacs 24.3随附的Org模式,来自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.

来自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.

因此,简而言之:评估(add-to-list 'org-agenda-files (expand-file-name "~/org")),如果您使用的org-agenda-file-regexp是默认值,那么组织模式将从~/org名称以结尾的任何文件中读取议程项目.org。(如果您org-agenda-file-regexp的默认值不是默认值,或者您需要它不仅匹配名称以结尾的文件,.org还可以通过对其进行自定义M-x customize-variable RET org-agenda-file-regexp RET。)


感谢您的回复@ aaron-miller。我正在将GNU Emacs 23.4.1与组织模式版本8.0.7一起使用。我找到了org-agenda-files命令,并按C-h v org-agenda-file-regexp您的定义进行了定义。但是,在添加您建议的代码行后,我得到警告。有什么想法吗?我应该仍然保留上一行还是删除它?
Dox

我解决了!谢谢您的帮助。我的解决方案是将该行包含(setq org-agenda-files (list "~/org/"))到我的.emacs文件中。干杯。
Dox

2
@Dox但这只是解决方案的一半,因为它将org-agenda-files仅添加到~/org计算表达式时存在的那些文件中,也就是说,如果在Emacs会话期间添加新文件,它将不会自动在下次启动Emacs之前将其作为议程项目的来源。当然,如果满足您的需要,那么就去做,但是值得一提的是org-agenda-file-regexp,并且org-agenda-files存在对目录中的特殊处理是有原因的。:)
亚伦·米勒

2
@Dox很好!假设您所有的Org文件都在其中,~/org并且以结尾.org,所有您需要做的就是添加(add-to-list 'org-agenda-files (expand-file-name "~/org"))到init文件中的某个位置,新的Emacs会话将自动扫描所有Org文件中的议程项目。(通过C-x C-e在表达式的结束括号上指向point,可以在现有的Emacs会话中获得相同的效果;然后,例如,要查看效果,请执行M-x org-agenda RET t。)
Aaron Miller

1
@Dox BTW将expand-file-name其参数规范化,在这种情况下,通过将扩展~到完整的主目录路径;并非每个使用path参数的Emacs Lisp函数都进行自己的规范化,因此手动执行此操作很有用。C-x C-e这样做eval-last-sexp,它将立即评估Lisp表单的后面-在编辑初始化文件时非常有用,例如,在无需重新启动Emacs或的情况下测试更改的效果并获得收益M-x eval-buffer
亚伦·米勒
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.