org-super-agenda 语法说明
文章目录
【注意】最后更新于 May 27, 2023,文中内容可能已过时,请谨慎使用。
每个组选择器在 agenda 中创建一个包含它匹配的项的组,并使用这些项;任何与它不匹配的项都被传递给下一个组选择器。选择器 :discard
是一个例外:它在不创建 agenda 组的情况下持有它匹配的所有项,并将其余项传递给下一个选择器。
每个组选择器都有一个参数,参数可以是单个原子也可以是一个列表,例如 :tag
接受一个字符串或字符串列表。有些选择器是谓词,如 :deadline
或 :habit
;为了一致性,他们也接受一个参数,但它被忽略了。
注意: 由于使用哈希表实现,分组后可能不会保留项的顺序。未来的版本可能会解决这个缺点。
Keywords
:name
- 可选地,设置组名头。可以是字符串;或者符号
none
,在这种情况下,不会插入头文件。如果没有设置:name
,则自动命名组。 :face
- A face 应用于组中的项目。如果 face 是一个包含
:append t
的列表,它将被追加。参见 functionadd-face-text-property
。 :transformer
- 用于在显示前,转换项字符串。用一个参数、项字符串或一个 sexp 调用的函数,在这种情况下,项字符串绑定到
it
。
Special selectors
每个选择器都需要一个参数,即使它只是 t
,例如 :anything
、 :auto-category
、 :auto-group
和 :discard
。
:and
- 将匹配所有选择器的项分组到一个或多个选项中。
:anything
- 选择每一个项目,无论什么。这可能是最有用的
:discard
,因为它实际上不测试任何东西,所以它比,例如:regexp "."
,它必须获取每个项目的条目文本。 :auto-category
- 这将自动按类别对项目进行分组(通常是其所在的文件名,没有
.org
后缀)。 :auto-dir-name
- 这将根据源缓冲区的目录名自动对项进行分组。
:auto-group
- 这将选择具有
agenda-group
org 属性集的项。通过为子树设置此属性,其中的每个项目都将按照该名称分类到议程组中,并放置到选择器为:auto-group
agenda 中)。 :auto-map
- 当将每个项作为来自 agenda 缓冲区的字符串应用到给定函数时,它会根据返回的值自动对项进行分组)。该函数应该返回一个字符串,用作分组键和其组的头。
:auto-outline-path
- 这将根据项目的大纲路径层次结构自动分组,如
计划/接管宇宙/接管月球
。 :auto-parent
- 这将自动按父标题对项目进行分组。这非常方便,特别是如果您按项目分层地对任务进行分组,并使用议程限制将议程限制在一个子树中。
:auto-planning
- 这将自动按照项目最早的计划日期或截止日期对项目进行分组,并根据变量
org-super-agenda-date-format
进行格式化。 :auto-priority
- 这将自动按优先级对项目进行分组。
:auto-property
- 这将根据给定属性的值自动对项进行分组
:auto-tags
- 这将自动根据所有标签对项目进行分组(即,具有完全相同标签的项目,无论以何种顺序,都将被分组在一起)。
:auto-todo
- 这将自动根据待办事项关键字对项目进行分组。
:auto-ts
- 这将自动按条目中任何位置的最新时间戳的日期对条目进行分组,并根据变量
org-super-agenda-date-format
进行格式化。对于参数reverse
,组按最新优先排序。 :discard
- 丢弃匹配选择器的项。在此之后处理的任何组都不会看到丢弃的项。您可以在组列表的开头或结尾使用它,以便缩小项目列表(与
:not
结合使用),或者排除您不感兴趣的项目。 :not
- 将不匹配任何选择器的项分组到任意组中。
- 注意,
:not
group 选择器 创建 一个与它不匹配的项的组; 它可以和:discard
连用来丢弃不匹配的项。例如,(:discard (:not (:priority "A"))))
作为第一个选择器意味着只有优先级为A
的项目会出现在议程中,而(:discard (:priority "C"))
意味着任何优先级为C
的项目都不会出现在议程中。
- 注意,
:order
- 设置顺序部分的数字将显示在 agenda 中,最低的数字首先。默认为
0
。 :order-multi
- 一次设置多个组的顺序,如
(:order-multi (2 (groupA) (groupB) ...))
,将这些组的顺序设置为 2。 :take
- 取组中的前n个事项。如果n是负的,取最后n项。例如,
(:take (-3 group))
将从组中取出最后3个项目。剩余的项被丢弃。注意:不能保证保留来自group的条目的顺序,因此:take
可能并不总是显示期望的条目。
Normal selectors
这些选择器单独接受一个参数,或者接受列表中的多个参数。
:category
- 将匹配任何给定类别的项目分组。参数可以是字符串或字符串列表。
:children
- 选择任何有子条目的项。参数可以是
t
来匹配,如果它有任何子参数,可以是nil
来匹配,如果它有任何带有 to-do 关键字的子参数,可以是todo
来匹配,如果它有带有某些 to-do 关键字的子参数,可以是一个字符串来匹配。您可以使用它来选择作为项目顶级标题的项。请注意,在非每日/每周视图中,由于其递归性质,这可能非常慢。 :date
- 对具有关联日期的项进行分组。参数可以是
t
匹配具有任何日期的项,nil
匹配没有日期的项,或today
匹配具有今天日期的项。与ts-date
日期文本属性进行匹配。 :deadline
- 对有截止日期的项目进行分组。参数可以是
t
(匹配任意截止日期的项)、nil
(匹配没有截止日期的项)、past
(匹配过去截止日期的项)、today
(匹配截止日期为今天的项)或future
(匹配未来截止日期的项)。也可以给出参数,比如before DATE
或after DATE
, 其中 DATE 是org-time-string-to-absolute
可以处理一个日期字符串 。 :effort<
- 将小于(或等于)给定工作量的项目分组。参数是一个时间-持续时间字符串,例如
5
或0:05
表示5分钟。 :effort>
- 将高于(或等于)给定工作量的项目分组。参数是一个时间-持续时间字符串,例如
5
或0:05
表示5分钟。 :file-path
- 将缓冲区的文件名路径匹配任何给定正则表达式的项分组。
:habit
- 将习惯项分组(属性为
STYLE: habit
的项)。 :heading-regexp
- 将标题匹配任何给定正则表达式的项分组。
:log
- Group Agenda Log Mode 模式项目。参数可以是
close
或closed
来选择今天关闭的项目;clock
或clocked
选择今天已打卡的项目;changed
或state
选择今天待办事项状态发生变化的项目;t
选择任何已记录的项,或nil
选择任何未记录 non-logged 的项。
(请注意,这些项目也可以由
:time-grid
选择器匹配,所以如果您希望这些项目在它们自己的组中显示,您可能需要在包含:time-grid
选择器的组之前选择它们。 :pred
- 如果任何给定的谓词函数在调用时返回 non-nil,并且每个项目都是来 agenda 缓冲区字符串,则将项目分组的。
:priority
- 将匹配任何给定优先级的项目分组。参数可以是一个字符串或字符串列表,它应该是优先级字母,例如
A
。 :priority>
- 将高于给定优先级的项目分组,例如
C
。 :priority>=
- 将高于或等于给定优先级的项分组,例如
B
。 :priority<
- 将低于给定优先级的项目分组,例如
A
。 :priority<=
- 将低于或等于给定优先级的项目分组,例如
B
。 :property
- 使用属性对项进行分组,值可选。参数可以是属性名字符串,也可以是属性名字符串和用于测试值的值字符串或谓词的列表。
:regexp
- 将匹配任何给定正则表达式的项分组。
:scheduled
- 对计划的项目进行分组。参数可以是
t
(匹配任何日期计划的项目)nil
(匹配没有计划的项目)past
(匹配过去计划的项目)today
(匹配今天计划的项目)future
(匹配未来计划的项目)
也可以给出参数,比如
before DATE
或after DATE
,其中 DATA 是一个org-time-string-to-absolute
可以处理日期字符串。 :tag
- 将匹配任何给定标记的项目分组。参数可以是字符串或字符串列表。
:time-grid
- 对出现在时间网格上的项目进行分组。
:todo
- 将匹配给定的任意一个关键字的项分组。参数可以是字符串或字符串列表,也可以是
t
来匹配任何关键字,或者nil
来只匹配非待办项。
文章作者 iTBoyer
上次更新 2023-05-27