大纲次要模式(Outline minor mode)是一种缓冲区局部次要模式,它会隐藏缓冲区的部分内容,仅保留标题行可见。 该次要模式可与其他主模式配合使用 (see Outline Minor Mode in the Emacs Manual)。
定义哪些行为标题行有两种方式:通过变量
outline-regexp 或 outline-search-function。
该变量是一个正则表达式。 任何行首能匹配此正则表达式的行都会被视为标题行。 在行内(而非左边缘)开始的匹配不计入有效匹配。
另一种方式是,当无法编写匹配标题行的正则表达式时, 可以定义一个函数来辅助大纲次要模式查找标题行。
变量 outline-search-function 指定该函数,它接受四个参数:
bound、move、backward 和 looking-at。
该函数完成两项任务:匹配当前标题行,以及查找下一个或上一个标题行。
若参数 looking-at 为非 nil,则当光标位于大纲标题行开头时,
函数应返回非 nil。
若参数 looking-at 为 nil,则使用前三个参数。
参数 bound 是一个缓冲区位置,作为搜索边界。
找到的匹配结果不得超出该位置。
若该值为 nil,则表示搜索至缓冲区可访问部分的末尾。
若参数 move 为非 nil,则搜索失败时应移动至搜索边界并返回 nil。
若参数 backward 为非 nil,则该函数应向后搜索上一个标题行。
该变量是一个无参函数,
应返回当前标题的层级。
无论你使用 outline-regexp 还是 outline-search-function,
该函数都是必需的。
若 Emacs 编译时包含 tree-sitter 支持, 当主模式设置了以下变量时,Emacs 可自动启用大纲次要模式。
该变量用于指示 Emacs 如何查找包含大纲标题的行。 它应为一个谓词函数,用于匹配标题行上的节点。