Карты фринга — это фактические битовые карты, которые представляют логические индикаторы фринга для обрезанных или продолжающихся строк, границ буфера, стрелок оверлея и т. д. Каждая битовая карта представляется символом.
Эти символы вызываются переменной
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-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-circleНе используется основными функциями Emacs.
В следующем разделе описывается, как определить собственные карты фринга.
Эта функция возвращает битовые карты фринга строки отображения, содержащей позицию pos в окне window. Возвращаемое значение имеет вид (left right ov), где left — это символ битовой карты фринга в левом фринге (или nil, если битовая карта отсутствует), right — аналогично для правого фринга, а ov — не nil, если в левом фринге есть стрелка оверлея.
Значение равно nil, если pos не виден в window. Если window равно nil, это означает выбранное окно. Если pos равно nil, это означает значение точки в window.