Org mode 内置多个控制日程生成与展示的变量。全局变量对所有日程命令(包括自定义命令)生效。若只需为单个自定义视图修改设置,可在 org-agenda-custom-commands 中对应位置插入变量名与值列表。示例:
(setq org-agenda-custom-commands
'(("w" todo "WAITING"
((org-agenda-sorting-strategy '(priority-down))
(org-agenda-prefix-format " Mixed: ")))
("U" tags-tree "+boss-urgent"
((org-fold-show-context-detail 'minimal)))
("N" search ""
((org-agenda-files '("~org/notes.org"))
(org-agenda-text-search-extra-files nil)))))
此时 w 命令仅按优先级排序,前缀格式简化为 ‘Mixed:’ ,不再显示条目分类。U 的稀疏标签树会极度紧凑,匹配标题的上层层级与后续标题均不显示。N 命令则限定只在单个文件内进行文本搜索。
对于生成区块日程的命令组, org-agenda-custom-commands 提供两处设置位置:可添加仅对组内单条命令生效的选项,以及对组内所有命令生效的选项。前者直接加入对应命令条目;后者需放在所有命令条目之后。回到区块日程示例(见 Block agenda),将 h 的默认排序设为 priority-down ,而 ‘garden’ 标签查询结果反向排序为 priority-up ,配置如下:
(setq org-agenda-custom-commands
'(("h" "Agenda and Home-related tasks"
((agenda)
(tags-todo "home")
(tags "garden"
((org-agenda-sorting-strategy '(priority-up)))))
((org-agenda-sorting-strategy '(priority-down))))
("o" "Agenda and Office-related tasks"
((agenda)
(tags-todo "work")
(tags "office")))))
可见变量值与括号结构略复杂。不确定时建议使用自定义界面设置该变量,其完全支持该结构。注意:在该界面设置选项时, 值(values) 为纯 Lisp 表达式,字符串需自行添加双引号。
如需控制某日程命令仅在特定上下文可用,可自定义 org-agenda-custom-commands-contexts 。例如日程命令 o 仅在阅读邮件时使用,配置如下:
(setq org-agenda-custom-commands-contexts
'(("o" (in-mode . "message-mode"))))
也可让按键 o 在特定上下文映射到另一命令 r:
(setq org-agenda-custom-commands-contexts
'(("o" "r" (in-mode . "message-mode"))))
更多说明见该变量的文档字符串。