当前缓冲区的日程视图

blu*_*eys 3 emacs elisp org-mode

编辑:解决方案很简单,但任何人的"奖励积分"可以解释为什么我的方法不起作用.

ORIG:我想要一个org-mode-custom-command来显示一个只能从当前缓冲区创建的议程.

以下代码段显示了我想要的视图类型.

(setq org-agenda-custom-commands
      '(("b" "Buffer summary"
     ((todo "TODO" ((org-agenda-files '("~/.agenda/notes.org"))))))))
Run Code Online (Sandbox Code Playgroud)

但是,我不想指定文件名,而是想使用当前缓冲区.这是我的抨击.

(setq org-agenda-custom-commands
      '(("b" "Buffer summary"
     ((todo "TODO" ((org-agenda-files (buffer-file-name))))))))
Run Code Online (Sandbox Code Playgroud)

当我打开一个组织缓冲区并运行这个议程命令时,结果只是一个非常空白的议程视图.我认为这是因为缓冲区文件名的评估时间晚于我按下议程视图时......?

我还在开始学习elisp,所以不要犹豫,指出明显的.谢谢.

编辑:

根据评论中的建议.

(setq org-agenda-custom-commands
      '(("b" "Buffer summary"
     ((todo "TODO" ((org-agenda-files (list (buffer-file-name)))))))))
Run Code Online (Sandbox Code Playgroud)

我收到了回溯.

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  file-directory-p(nil)
...etc...
Run Code Online (Sandbox Code Playgroud)

fni*_*sen 5

对我来说,最明显的不是创建额外的议程视图,而只是简单地调用该缓冲区上的任何现有视图(通过调用将视图限制为当前缓冲区,例如C-c a < a,<当前缓冲区的限制).

如果您仍想为当前缓冲区创建额外的议程视图,我不确定是否可以使用所有命令.当然,调用occur-tree将在当前缓冲区上工作.不确定todo等等.