42.13.4 侧边栏位图

侧边栏位图(fringe bitmaps) 是用于表示截断行、续行、缓冲区边界、覆盖箭头等逻辑侧边栏指示器的实际位图。每个位图都由一个符号表示。 这些符号由变量 fringe-indicator-alist(将侧边栏指示器映射到位图,see 侧边栏指示器) 以及变量 fringe-cursor-alist(将侧边栏光标映射到位图,see 侧边栏光标)引用。

Lisp 程序也可以通过为行中出现的某个字符设置 display 属性, 直接在左侧或右侧侧边栏显示位图 (see 其他显示规范)。 此类显示规范的格式如下:

(fringe bitmap [face])

fringe 为符号 left-fringeright-fringebitmap 是标识要显示位图的符号。可选参数 face 指定一个文本的视觉样式, 其前景色和背景色用于显示位图;对于 face 未指定的颜色, 将使用 fringe 文本的视觉样式的属性。如果省略 face, 则表示对 fringe 文本的视觉样式未指定的颜色使用 default 文本的视觉样式的属性。 为获得不依赖 defaultfringe 文本的视觉样式属性的可预期结果, 建议始终提供具体的 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-alistfringe-cursor-alist):

left-arrow, right-arrow

用于表示截断行。

left-curly-arrow, right-curly-arrow

用于表示续行。

right-triangle, left-triangle

前者用于覆盖箭头,后者未使用。

up-arrow, down-arrow
bottom-left-angle, bottom-right-angle
top-left-angle, top-right-angle
left-bracket, right-bracket
empty-line

用于表示缓冲区边界。

filled-rectangle, hollow-rectangle
filled-square, hollow-square
vertical-bar, horizontal-bar

用于不同类型的侧边栏光标。

exclamation-mark, question-mark
large-circle

Emacs 核心功能未使用。

下一小节将介绍如何定义自定义侧边栏位图。

Function: fringe-bitmaps-at-pos &optional pos window

该函数返回窗口 window 中包含位置 pos 的显示行的侧边栏位图。 返回值格式为 (left right ov), 其中 left 是左侧侧边栏位图的符号(无位图时为 nil), right 对应右侧侧边栏,ov 在左侧侧边栏存在覆盖箭头时为非 nil

poswindow 中不可见,返回值为 nilwindownil 时表示选中窗口。 posnil 时表示 window 中的点位置。