Emacs 当前缓冲区的议程视图
编辑:这个解决方案很简单,但对任何能解释我的方法为什么不起作用的人来说都是“加分” 原文: 我想要一个组织模式的自定义命令来显示一个议程,这只是从当前的缓冲区 下面的代码片段显示了我想要的视图类型Emacs 当前缓冲区的议程视图,emacs,elisp,org-mode,Emacs,Elisp,Org Mode,编辑:这个解决方案很简单,但对任何能解释我的方法为什么不起作用的人来说都是“加分” 原文: 我想要一个组织模式的自定义命令来显示一个议程,这只是从当前的缓冲区 下面的代码片段显示了我想要的视图类型 (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 '("~/.agenda/notes.org"))))))))
但是,我不想指定文件名,而是想使用当前缓冲区。这是我的尝试
(setq org-agenda-custom-commands
'(("b" "Buffer summary"
((todo "TODO" ((org-agenda-files (buffer-file-name))))))))
当我打开一个组织缓冲区并运行这个议程命令时,结果就是一个几乎空白的议程视图。我猜想这是因为缓冲区文件名的计算时间晚于我按下议程视图时
我仍在开始学习elisp,所以请毫不犹豫地指出显而易见的问题。多谢各位
编辑:
遵循评论中的建议
(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...
对我来说,最明显的是不要创建一个额外的议程视图,而只是简单地调用该缓冲区上的任何现有视图(通过调用将视图限制为当前缓冲区,例如
C-ca
,其中…议程视图通常显示从所有议程文件收集的信息,首先通过org命令C-C[(org-agenda file to front)激活试图使议程可振动或可跟踪的文件
您可以通过以下方式测试当前buff名称:
(消息(缓冲区文件名))
通常,我使用各种文件的议程视图,但我可以跟踪不同的议程,例如完成、进度、修复、错误,只需使用热键即可
这是我的:
(setq)自定义命令
'(
(“x”议程)
(“y”议程*)
(“o”todo“ONPROGRESS”)
(“n”标记待办事项“+提示”)
(“待办事项”完成)
(“待办事项”待决)
(“b”todo“BUG”)
(“待处理事项”固定)
(“F”待办事项树“固定”)
))
因此,如果我想查看例如已完成的内容C-C a d
,这将显示所有已完成的列表,无论它们来自哪个文件。未测试猜测:尝试(列表(缓冲区文件名))
,而不仅仅是(缓冲区文件名)
,因为该值应该是一个列表。(它可以是一个文件名,但有不同的含义;请参阅组织议程文件的docstring
)这如何回答我提出的问题?请重新阅读问题……你已经否决了,这很快!我的观点是议程可能来自不同的来源(.org文件),为什么不使用类似寄存器的东西来打开各自的议程文件呢?我确实使用各种组织文件。我像这样加载它们(setq组织议程文件(append(file expand wildcards“~/.agenda/*.org”)(file expand wildcards“~/.agenda/***.org”!))`.这些文件会随着时间的推移而变化,我不想用寄存器来识别它们。