24.7.7 Лица для Font Lock

Режим Font Lock может использовать для подсветки любые лица, но Emacs определяет несколько лиц специально для использования в Font Lock при подсветке текста. Эти лица Font Lock перечислены ниже. Они также могут использоваться основными режимами для синтаксической подсветки вне режима Font Lock (см. Соглашения для основных режимов).

Каждый из этих символов является одновременно именем лица и переменной, значение по умолчанию которой равно самому символу. Таким образом, значение по умолчанию font-lock-comment-face равно font-lock-comment-face.

Лица перечислены с описаниями их типичного использования и в порядке от более значимых к менее значимым. Если синтаксические категории режима не совсем соответствуют описаниям использования, лица можно назначать, руководствуясь этим порядком.

font-lock-warning-face

для конструкции, которая является необычной (например, незаэкранированная похожая по написанию кавычка в символе Emacs Lisp, например ‘‘foo’), или которая сильно меняет смысл другого текста, например ‘;;;###autoload’ в Emacs Lisp и ‘#error’ в C.

font-lock-function-name-face

для имени определяемой или объявляемой функции.

font-lock-function-call-face

для имени вызываемой функции. Это лицо наследует, по умолчанию, от font-lock-function-name-face.

font-lock-variable-name-face

для имени определяемой или объявляемой переменной.

font-lock-variable-use-face

для имени используемой переменной. Это лицо наследует, по умолчанию, от font-lock-variable-name-face.

font-lock-keyword-face

для ключевого слова с особым синтаксическим значением, например ‘for’ и ‘if’ в C.

font-lock-comment-face

для комментариев.

font-lock-comment-delimiter-face

для разделителей комментариев, например ‘/*’ и ‘*/’ в C. На большинстве терминалов это лицо наследуется от font-lock-comment-face.

font-lock-type-face

для имен пользовательских типов данных.

font-lock-constant-face

для имен констант, например ‘NULL’ в C.

font-lock-builtin-face

для имен встроенных функций.

font-lock-preprocessor-face

для команд препроцессора. Это лицо наследует, по умолчанию, от font-lock-builtin-face.

font-lock-string-face

для строковых констант.

font-lock-doc-face

для документации, встроенной в программный код внутри специально оформленных комментариев или строк. Это лицо наследует, по умолчанию, от font-lock-string-face.

font-lock-doc-markup-face

для элементов разметки в тексте, использующем font-lock-doc-face. Обычно используется для конструкций разметки в документации, встроенной в программный код, в соответствии с такими соглашениями, как Haddock, Javadoc или Doxygen. Это лицо наследует, по умолчанию, от font-lock-constant-face.

font-lock-negation-char-face

для легко упускаемых из виду символов отрицания.

font-lock-escape-face

для escape-последовательностей в строках. Это лицо наследует, по умолчанию, от font-lock-regexp-grouping-backslash.

Вот пример на Python, где используется escape-последовательность \n:

print('Hello world!\n')
font-lock-number-face

для чисел.

font-lock-operator-face

для операторов.

font-lock-property-name-face

для свойств объекта, например объявления полей в структуре. Это лицо наследует, по умолчанию, от font-lock-variable-name-face.

font-lock-property-use-face

для свойств объекта, например использования полей в структуре. Это лицо наследует, по умолчанию, от font-lock-property-name-face.

Например,

typedef struct
{
  int prop;
//    ^ свойство
} obj;

int main()
{
  obj o;
  o.prop = 3;
//  ^ свойство
}
font-lock-punctuation-face

для знаков пунктуации, таких как скобки и разделители.

font-lock-bracket-face

для скобок (например, (), [], {}). Это лицо наследует, по умолчанию, от font-lock-punctuation-face.

font-lock-delimiter-face

для разделителей (например, ;, :, ,). Это лицо наследует, по умолчанию, от font-lock-punctuation-face.

font-lock-misc-punctuation-face

для пунктуации, не являющейся скобками или разделителями. Это лицо наследует, по умолчанию, от font-lock-punctuation-face.