Отображение face
Когда Emacs отображает фрагмент текста, внешний вид текста может определяться начертаниями (faces), полученными из различных источников. Если эти различные источники вместе задают более одного face для конкретного символа, Emacs объединяет атрибуты этих разных face. Ниже приведен порядок объединения face в Emacs от наивысшего приоритета к наинизшему:
- Если текст состоит из специального глифа, этот глиф может определять конкретный face. См. Glyphs.
- Если текст находится внутри активного региона, Emacs выделяет его с помощью face
region. См. Standard Faces в The GNU Emacs Manual. - Если текст находится внутри оверлея со свойством
face, отличным отnil, Emacs применяет face, указанный(-ые) этим свойством. Если у оверлея есть свойствоmouse-faceи курсор мыши находится достаточно близко к оверлею, Emacs вместо этого применяет face или атрибуты face, указанные свойствомmouse-face. См. Overlay Properties.Когда один и тот же символ перекрывается несколькими оверлеями, оверлей с более высоким приоритетом переопределяет оверлеи с более низким приоритетом. См. Overlays.
- Если текст содержит свойство
faceилиmouse-face, Emacs применяет указанные face и атрибуты face. См. Properties with Special Meanings. (Именно так применяются face режима Font Lock. См. Font Lock Mode.) - Если текст находится в строке режима (mode line) выбранного окна, Emacs применяет face
mode-line. Для строки режима невыбранного окна Emacs применяет facemode-line-inactive. Для строки заголовка (header line) Emacs применяет faceheader-line. Для строки вкладок (tab line) Emacs применяет facetab-line. -
Если текст получен из строки оверлея через свойства
before-stringилиafter-string(см. Overlay Properties) либо из строки отображения (см. Other Display Specifications), и эта строка не содержит свойстваfaceилиmouse-face, либо эти свойства оставляют некоторые атрибуты face неопределенными, но текст буфера, на который влияет свойство оверлея/отображения, задает face или эти атрибуты, Emacs применяет атрибуты face «базового» текста буфера. Однако это не относится к строкам, отображаемым на полях (display margins), которые вместо этого используют facemarginв качестве основы (см. Displaying in the Margins). - Если текст должен отображаться на полях (display margins), Emacs использует face
marginв качестве базового, поэтому любой атрибут, не заданный собственным face строки, берется из facemargin. - Если какой-либо атрибут не был задан на предыдущих шагах, Emacs применяет атрибут face
default.
На каждом этапе, если face имеет допустимый атрибут :inherit, Emacs обрабатывает любой атрибут со значением unspecified как имеющий соответствующее значение, полученное из родительского(-их) face. См. Face Attributes. Обратите внимание, что родительский(-ие) face также могут оставлять атрибут неопределенным; в этом случае атрибут остается неопределенным и на следующем уровне слияния face.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Displaying-Faces.html