按钮与一段文本相关联,通过覆盖层或文本属性
保存按钮专属信息,所有属性均从按钮类型初始化
(默认使用内置按钮类型 button)。
与所有 Emacs 文本一样,按钮的外观由 face 属性控制;
默认情况下(通过从 button 类型继承的 face 属性)
显示为简单下划线,类似常见网页链接。
为方便使用,提供两类按钮创建函数:
一类是为缓冲区中已有区域添加按钮属性,命名为 make-...button;
另一类会同时插入按钮文本,命名为 insert-...button。
所有按钮创建函数均接受 &rest 参数 properties,
它是一系列 property value 键值对,
用于指定要添加到按钮的属性;见 按钮属性。
此外,可以使用关键字参数 :type
指定要继承属性的按钮类型;见 按钮类型。
创建时未显式指定的属性会从按钮类型继承(如果该类型定义了该属性)。
以下函数使用覆盖层(see 覆盖层)保存按钮属性:
在当前缓冲区中从 beg 到 end 创建一个按钮,并返回该按钮。
在光标位置插入一个标签为 label 的按钮,并返回该按钮。
以下函数功能类似,但使用文本属性(see 文本属性) 保存按钮属性。这类按钮不会向缓冲区添加标记, 因此即使按钮数量极大,缓冲区编辑也不会变慢。 不过,如果文本上已存在文本视觉样式属性 (例如字体锁定模式设置的样式),按钮样式可能无法正常显示。 这两个函数均返回新按钮的起始位置。
在当前缓冲区中从 beg 到 end 使用文本属性创建按钮。
在光标位置使用文本属性插入标签为 label 的按钮。
有时更适合先将字符串转为按钮,而不立即插入缓冲区,
例如在创建后续可能插入缓冲区的数据结构时。
该函数将 string 转为这类按钮字符串,
用户点击按钮时会调用 callback。
可选参数 data 会作为调用 callback 时的参数。
如果为 nil,则使用按钮本身作为参数。
有时更适合将缓冲区中已有的文本转为按钮,而非插入新文本。
该函数将 start 到 end 的区域转为按钮。
参数 callback 和 data 的含义与 buttonize 相同。
可选参数 help-echo 用作按钮的 help-echo 属性。