42.13.4 Карты фринга

Карты фринга — это фактические битовые карты, которые представляют логические индикаторы фринга для обрезанных или продолжающихся строк, границ буфера, стрелок оверлея и т. д. Каждая битовая карта представляется символом. Эти символы вызываются переменной fringe-indicator-alist, которая сопоставляет индикаторы фринга битовым картам (см. Индикаторы фринга), и переменной fringe-cursor-alist, которая сопоставляет курсоры фринга битовым картам (см. Курсоры фринга).

Программы Lisp также могут напрямую отображать битовую карту в левом или правом фринге, используя свойство display для одного из символов, появляющихся в строке (см. Другие спецификации отображения). Такая спецификация отображения имеет вид

(fringe bitmap [face])

fringe — это либо символ left-fringe, либо right-fringe. bitmap — это символ, идентифицирующий битовую карту для отображения. Необязательный face указывает на фейс, чей цвет переднего и заднего плана будет использоваться для отображения битовой карты, используя атрибуты фейса fringe для цветов, которые face не указал. Если face опущен, это означает использование атрибутов фейса default для цветов, которые фейс fringe не указал. Для предсказуемых результатов, не зависящих от атрибутов фейсов 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-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.

В следующем разделе описывается, как определить собственные карты фринга.

Функция: fringe-bitmaps-at-pos &optional pos window

Эта функция возвращает битовые карты фринга строки отображения, содержащей позицию pos в окне window. Возвращаемое значение имеет вид (left right ov), где left — это символ битовой карты фринга в левом фринге (или nil, если битовая карта отсутствует), right — аналогично для правого фринга, а ov — не nil, если в левом фринге есть стрелка оверлея.

Значение равно nil, если pos не виден в window. Если window равно nil, это означает выбранное окно. Если pos равно nil, это означает значение точки в window.