org-agenda缓冲区不再显示日程安排事项。

5

我最近决定重新组织我的整个机构设置,使其更加高效。以前,我的机器上到处都是 .org 文件,但现在它们都存放在两个文件夹中:

~/work/org
~/personal/org

我使用以下命令重置org-mode搜索日程文件的位置:

;; set agenda files
(setq org-agenda-files (quote ("~/work/org"
                   "~/personal/org")))

然而,当我打开待办事项清单(C-c a t)时,会出现以下形式的错误:
Non-existent agenda file [filename]. [R]emove from list or [A]bort?

对于旧列表中的文件,如果我删除所有这些文件,最终会得到一个只显示以下内容的Org Agenda缓冲区:

Global list of TODO items of type: ALL
Available with `N r': (0)[ALL]

有没有想法,我做错了什么?

1
你在更改初始化文件后是否已经使用eval函数运行了 setq org-agenda-files 呢? - Sergii Dymchenko
查看 org-agenda-files 的值。 - Jeffrey DeLeo
请查看我在相关主题中的答案,讨论如何使用 org-agenda-file-regexp 设置此变量:http://superuser.com/a/702079/206164 - lawlist
大家好,感谢你们的评论。是的,我使用了eval函数来计算表达式。那么,我该如何准确地检查org-agenda-files的值呢? - krishnan
当你评估函数(org-agenda-files)时会发生什么 - 也就是说,在您的*Messages*缓冲区中显示的结果是什么?例如,我的结果看起来像这样:("/Users/HOME/.0.data/.0.emacs/.todo")另外,请告诉我们您对于org-agenda-file-regexp有什么设置。例如:(setq org-agenda-files (list "~/"))(setq org-agenda-file-regexp "\\[^.].*\.org\|.todo\'")`。 - lawlist
显示剩余5条评论
2个回答

11

确保您的 .Emacs 文件中没有使用“自定义”块设置 org-agenda-files。这是错误的常见来源。


嘿@fniessen,我是Emacs的新手。不确定`customize'块是什么。您能否详细解释一下? - krishnan
在您的.emacs文件中查找以下代码块: (custom-set-variables ;; custom-set-variables是由Custom添加的。 ;; 如果手动编辑它,可能会弄乱它,所以要小心。 ;; 您的init文件应该只包含一个这样的实例。 ;; 如果有多个,则它们将无法正常工作。 '(org-...)) - fniessen
啊,我明白了。我有一些代码行写着(custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(org-agenda-files nil)) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. ) 抱歉编辑不好。但这对你有帮助吗? - krishnan
是的,我认为可以这样做:将org-agenda-files设置为nil(即空列表)。注释掉该行代码--但要注意额外的括号,并重新启动Emacs。然后,您设置org-agenda-files的另一个位置应该是权威的。 - fniessen
嗨@fniessen,搞定了!非常感谢 :-) - krishnan

1

试试这个:

(setq org-agenda-files
      (append
       (file-expand-wildcards "~/work/org/*.org")
       (file-expand-wildcards "~/personal/org/*.org")))

嘿 @artscan,我尝试了这个但仍然有同样的错误。有什么想法吗?我可以给你任何输出来帮助找出问题吗? - krishnan
请给我命令(describe-variable 'org-agenda-files)的输出。 - artscan
我执行了 M-x describe-variables org-agenda-files 命令,得到了 org-agenda-files is a variable defined in 'org.el'. Its value is nil 的结果。这是你想要的吗? - krishnan
它不应该是nil,例如:("~/work/org/emacs.org" "~/personal/org/budget.org" ...)。在我的情况下,函数file-expand-wildcards返回目录中的.org文件列表。您可以从(setq org-agenda-files (quote ("~/work/org/foo.org")))开始,并且应该得到...其值为("~/work/org/foo.org") - artscan
嗨@artscan,我想fniessen找到了问题所在(尽管我确定其他事情也存在问题) :-) - krishnan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接