42.23.2 Отображение таблиц

Таблица отображения — это специальная таблица символов (см. Таблицы символов) с подтипом display-table, которая используется для переопределения обычных правил отображения символов. В этом разделе описывается, как создавать, инспектировать и присваивать элементы объекту таблицы отображения. В следующем разделе (см. Активная таблица отображения) описываются различные стандартные таблицы отображения и их приоритет.

Функция: make-display-table

Эта функция создает и возвращает таблицу отображения. Изначально в всех элементах таблицы стоит nil.

Обычные элементы таблицы отображения индексируются кодами символов; элемент по индексу c указывает, как отобразить код символа c. Значение должно быть nil (что означает отображение символа c в соответствии с обычными правилами отображения; см. Обычные правила отображения), или вектор кодов глифов (что означает отображение символа c как этих глифов; см. Глифы).

Предупреждение: если вы используете таблицу отображения для изменения отображения символов новой строки, весь буфер будет отображаться как одна длинная строка.

Таблица отображения также имеет шесть дополнительных слотов, которые служат для специальных целей. Вот таблица их значений; nil в любом слоте означает использование значения по умолчанию для этого слота, как указано ниже.

0

Глиф для конца усеченной строки экрана (по умолчанию это ‘$’). См. Глифы. В графических терминалах Emacs по умолчанию использует стрелки в полях для указания усечения, поэтому таблица отображения не имеет эффекта, если только вы не отключите поля (см. Поля окна в Руководстве GNU Emacs).

1

Глиф для конца продолженной строки (по умолчанию это ‘\’). В графических терминалах Emacs по умолчанию использует изогнутые стрелки в полях для указания продолжения, поэтому таблица отображения не имеет эффекта, если только вы не отключите поля.

2

Глиф для указания символа, отображаемого как восьмеричный код символа (по умолчанию это ‘\’).

3

Глиф для указания управляющего символа (по умолчанию это ‘^’).

4

Вектор глифов для указания наличия невидимых строк (по умолчанию это ‘...’). См. Селективное отображение.

5

Глиф, используемый для рисования границы между окнами, расположенными бок о бок (по умолчанию это ‘|’). См. Разделение окон. В настоящее время это влияет только на текстовые терминалы; в графических терминалах, если поддерживаются и используются вертикальные полосы прокрутки, полоса прокрутки разделяет два окна, а если вертикальных полос прокрутки нет и нет разделителей (см. Разделители окон), Emacs использует тонкую линию для обозначения границы.

Например, вот как можно сконструировать таблицу отображения, которая имитирует эффект установки ctl-arrow в значение, не равное nil (см. Глифы, для функции make-glyph-code):

(setq disptab (make-display-table))
(dotimes (i 32)
  (or (= i ?\t)
      (= i ?\n)
      (aset disptab i
            (vector (make-glyph-code ?^ 'escape-glyph)
                    (make-glyph-code (+ i 64) 'escape-glyph)))))
(aset disptab 127
      (vector (make-glyph-code ?^ 'escape-glyph)
              (make-glyph-code ?? 'escape-glyph)))
Функция: display-table-slot display-table slot

Эта функция возвращает значение дополнительного слота slot display-table. Аргумент slot может быть числом от 0 до 5 включительно или именем слота (символом). Допустимые символы: truncation, wrap, escape, control, selective-display и vertical-border.

Функция: set-display-table-slot display-table slot value

Эта функция сохраняет value в дополнительный слот slot display-table. Аргумент slot может быть числом от 0 до 5 включительно или именем слота (символом). Допустимые символы: truncation, wrap, escape, control, selective-display и vertical-border.

Функция: describe-display-table display-table

Эта функция отображает описание таблицы отображения display-table в буфере справки.

Команда: describe-current-display-table

Эта команда отображает описание текущей таблицы отображения в буфере справки.