【发布时间】:2015-04-07 15:34:03
【问题描述】:
编辑:解决方案很简单,但对于任何可以解释我的方法为什么不起作用的人来说都是“加分”。
原点: 我想要一个 org-mode-custom-command 来显示仅由当前缓冲区制作的议程。
下面的 sn-p 显示了我想要的那种视图。
(setq org-agenda-custom-commands
'(("b" "Buffer summary"
((todo "TODO" ((org-agenda-files '("~/.agenda/notes.org"))))))))
但是,我不想指定文件名,而是想使用当前缓冲区。这是我的尝试。
(setq org-agenda-custom-commands
'(("b" "Buffer summary"
((todo "TODO" ((org-agenda-files (buffer-file-name))))))))
当我打开一个 org-buffer 并运行这个议程命令时,结果只是一个几乎空白的议程视图。我认为这是因为缓冲区文件名的评估时间晚于我按下议程视图时...?
我还在开始学习 elisp,所以不要犹豫,指出显而易见的。谢谢。
编辑:
遵循 cmets 中的建议。
(setq org-agenda-custom-commands
'(("b" "Buffer summary"
((todo "TODO" ((org-agenda-files (list (buffer-file-name)))))))))
我收到回溯。
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
file-directory-p(nil)
...etc...
【问题讨论】:
-
未经测试的猜测:尝试
(list (buffer-file-name))而不仅仅是(buffer-file-name),因为该值应该是一个列表。 (它可以是单个文件名,但含义不同;请参阅org-agenda-files的文档字符串。)