侧边栏位图(fringe bitmaps) 是用于表示截断行、续行、缓冲区边界、覆盖箭头等逻辑侧边栏指示器的实际位图。每个位图都由一个符号表示。
这些符号由变量 fringe-indicator-alist(将侧边栏指示器映射到位图,see 侧边栏指示器)
以及变量 fringe-cursor-alist(将侧边栏光标映射到位图,see 侧边栏光标)引用。
Lisp 程序也可以通过为行中出现的某个字符设置 display 属性,
直接在左侧或右侧侧边栏显示位图 (see 其他显示规范)。
此类显示规范的格式如下:
(fringe bitmap [face])
fringe 为符号 left-fringe 或 right-fringe。
bitmap 是标识要显示位图的符号。可选参数 face 指定一个文本的视觉样式,
其前景色和背景色用于显示位图;对于 face 未指定的颜色,
将使用 fringe 文本的视觉样式的属性。如果省略 face,
则表示对 fringe 文本的视觉样式未指定的颜色使用 default 文本的视觉样式的属性。
为获得不依赖 default 和 fringe 文本的视觉样式属性的可预期结果,
建议始终提供具体的 face,不要省略。
特别地,如果希望位图始终使用 fringe 文本的视觉样式显示,
可将 fringe 作为 face。
例如,要在左侧侧边栏使用 warning 文本的视觉样式显示箭头,可使用如下代码:
(overlay-put
(make-overlay (point) (point))
'before-string (propertize
"x" 'display
`(left-fringe right-arrow warning)))
以下是 Emacs 中定义的标准侧边栏位图列表,
以及它们当前在 Emacs 中的使用方式(通过 fringe-indicator-alist 和 fringe-cursor-alist):
left-arrow, right-arrow用于表示截断行。
left-curly-arrow, right-curly-arrow用于表示续行。
right-triangle, left-triangle前者用于覆盖箭头,后者未使用。
up-arrow, down-arrowbottom-left-angle, bottom-right-angletop-left-angle, top-right-angleleft-bracket, right-bracketempty-line用于表示缓冲区边界。
filled-rectangle, hollow-rectanglefilled-square, hollow-squarevertical-bar, horizontal-bar用于不同类型的侧边栏光标。
exclamation-mark, question-marklarge-circleEmacs 核心功能未使用。
下一小节将介绍如何定义自定义侧边栏位图。
该函数返回窗口 window 中包含位置 pos 的显示行的侧边栏位图。
返回值格式为 (left right ov),
其中 left 是左侧侧边栏位图的符号(无位图时为 nil),
right 对应右侧侧边栏,ov 在左侧侧边栏存在覆盖箭头时为非 nil。
若 pos 在 window 中不可见,返回值为 nil。
window 为 nil 时表示选中窗口。
pos 为 nil 时表示 window 中的点位置。