42.20.5 按钮缓冲区命令

这些是用于在 Emacs 缓冲区中定位按钮并对其进行操作的命令与函数。

push-button 是用户用于实际按下按钮的命令,在按钮自身中通过覆盖层或文本属性里的局部键映射,默认绑定到 RETmouse-2。在按钮外部同样有用的命令,例如 forward-buttonbackward-button,还可在存储于 button-buffer-map 中的键映射里使用;使用按钮的模式可以将 button-buffer-map 作为自身键映射的父键映射。 或者,开启 button-mode 也能达到大致相同的效果:这是一个次要模式,仅会将 button-buffer-map 安装为次要模式键映射,不执行其他操作。

如果按钮拥有非 nilfollow-link 属性,并且 mouse-1-click-follows-link 已设置,那么快速点击 mouse-1 也会激活 push-button 命令。 See 定义可点击文本.

Command: push-button &optional pos use-mouse-action

执行位置 pos 处按钮指定的操作。 pos 可以是缓冲区位置或鼠标事件。如果 use-mouse-action 为非 nil,或 pos 是鼠标事件(see 鼠标事件),则尝试调用按钮的 mouse-action 属性而非 action;若按钮 没有 mouse-action 属性,则照常使用 actionpos 默认为点,除非 push-button 是由鼠标事件 交互调用,此时会使用鼠标事件对应的位置。若 pos 处无按钮, 则不执行任何操作并返回 nil,否则返回 t

Command: forward-button n &optional wrap display-message no-error

移动到第 n 个下一个按钮,若 n 为负数则移动到第 n 个上一个按钮。若 n 为零,移动到点所在按钮的起始位置。若 wrap 为非 nil,越过缓冲区任意一端后会从另一端继续。若 display-message 为非 nil,则显示按钮的 help-echo 字符串。 所有带有非 nilskip 属性的按钮都会被跳过。 返回找到的按钮,若未找到任何按钮则发出错误信号。若 no-error 为非 nil,则返回 nil 而非发出错误。

Command: backward-button n &optional wrap display-message no-error

移动到第 n 个上一个按钮,若 n 为负数则移动到第 n 个下一个按钮。若 n 为零,移动到点所在按钮的起始位置。若 wrap 为非 nil,越过缓冲区任意一端后会从另一端继续。若 display-message 为非 nil,则显示按钮的 help-echo 字符串。 所有带有非 nilskip 属性的按钮都会被跳过。 返回找到的按钮,若未找到任何按钮则发出错误信号。若 no-error 为非 nil,则返回 nil 而非发出错误。

Function: next-button pos &optional count-current
Function: previous-button pos &optional count-current

返回当前缓冲区中位置 pos 之后(对应 next-button)或之前(对应 previous-button)的下一个按钮。若 count-current 为非 nil,则在搜索时计入 pos 处的按钮, 而非从下一个按钮开始。