Spec-Zone.ru › Elisp

Переназначение шрифтов

Переменная face-remapping-alist используется для буферных или глобальных изменений внешнего вида шрифта. Например, она используется для реализации команды text-scale-adjust (см. Масштабирование текста в Руководстве GNU Emacs).

Переменная: face-remapping-alist

Значение этой переменной — список списков (alist), элементы которого имеют вид (face . remapping). Это заставляет Emacs отображать любой текст с шрифтом face с переназначением, а не с обычным определением face.

переназначение может быть любым указанием шрифта, подходящим для текстового свойства face: либо шрифтом (т.е., именем шрифта или списком свойств/значений атрибутов), либо списком шрифтов. Подробности см. в описании текстового свойства face в разделе Специальные свойства. переназначение служит полным описанием переназначенного шрифта — оно заменяет обычное определение face, а не изменяет его.

Если face-remapping-alist является локальным для буфера, его локальное значение применяется только в этом буфере. Если face-remapping-alist включает шрифты, применимые только к определённым окнам, используя (:filtered (:window param val) spec), этот шрифт применяется только в тех окнах, которые соответствуют условиям фильтра (см. Специальные свойства). Чтобы временно отключить фильтрацию шрифтов, привяжите face-filters-always-match к значению, отличному от nil, затем все фильтры шрифтов будут соответствовать любому окну.

Примечание: переназначение шрифтов не рекурсивно. Если переназначение ссылается на то же имя шрифта face, прямо или через атрибут :inherit другого шрифта в переназначение, эта ссылка использует обычное определение шрифта face. Например, если шрифт mode-line переназначен с помощью этой записи в face-remapping-alist:

(mode-line italic mode-line)

то новое определение шрифта mode-line наследует от шрифта italic, и обычного (не переназначенного) определения шрифта mode-line.

Следующие функции реализуют интерфейс более высокого уровня для face-remapping-alist. Большинство кодов Lisp должны использовать эти функции вместо непосредственной установки face-remapping-alist, чтобы избежать перезаписи переназначений, применённых в других местах. Эти функции предназначены для переназначений, локальных для буфера, поэтому они все делают face-remapping-alist локальными для буфера как побочный эффект. Они управляют записями face-remapping-alist вида

  (face relative-spec-1 relative-spec-2 ... base-spec)

где, как объяснено выше, каждый из relative-spec-N и base-spec является либо именем шрифта, либо списком свойств/значений атрибутов. Каждая из записей относительного переназначения, relative-spec-N, управляется функциями face-remap-add-relative и face-remap-remove-relative; они предназначены для простых модификаций, таких как изменение размера текста. Запись основного переназначения, base-spec, имеет наименьший приоритет и управляется функциями face-remap-set-base и face-remap-reset-base; она предназначена для основных режимов, чтобы переназначать шрифты в управляемых ими буферах.

Функция: face-remap-add-relative face &rest specs

Эта функция добавляет specs в качестве относительных переназначений для шрифта face в текущем буфере. specs должен быть списком, где каждый элемент — либо имя шрифта, либо список свойств/значений атрибутов.

Возвращаемое значение — объект Lisp, который служит куки; вы можете передать этот объект в качестве аргумента функции face-remap-remove-relative, если вам нужно удалить переназначение позже.

;; Remap the 'escape-glyph' face into a combination
;; of the 'highlight' and 'italic' faces:
(face-remap-add-relative 'escape-glyph 'highlight 'italic)

;; Increase the size of the 'default' face by 50%:
(face-remap-add-relative 'default :height 1.5)
Функция: face-remap-remove-relative cookie

Эта функция удаляет относительное переназначение, добавленное ранее функцией face-remap-add-relative. cookie должен быть объектом Lisp, возвращенным функцией face-remap-add-relative при добавлении переназначения.

Функция: face-remap-set-base face &rest specs

Эта функция устанавливает основное переназначение для face в текущем буфере на specs. Если specs пустой, восстанавливается стандартное основное переназначение, аналогично вызову face-remap-reset-base (см. ниже); обратите внимание, что это отличается от specs, содержащего единственное значение nil, которое имеет обратный эффект (глобальное определение face игнорируется).

Это перезаписывает стандартное base-spec, которое наследует глобальное определение шрифта, поэтому вызов должен сам добавлять такое наследование, если это требуется.

Функция: face-remap-reset-base face

Эта функция устанавливает основное переназначение для face на его значение по умолчанию, которое наследует от глобального определения face.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Face-Remapping.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API