Таблицы отображения
Таблица отображения — это специальная таблица символов (см. Таблицы символов) с подтипом display-table, которая используется для переопределения обычных соглашений об отображении символов. В этом разделе описывается, как создавать и проверять объект таблицы отображения, а также назначать ему элементы. В следующем разделе (см. Активная таблица отображения) описаны различные стандартные таблицы отображения и порядок их приоритета.
- Функция: make-display-table
Эта функция создаёт и возвращает таблицу отображения. Изначально все элементы таблицы содержат
nil.
Обычные элементы таблицы отображения индексируются кодами символов; элемент с индексом c указывает, как отображать символ с кодом c. Значением должно быть nil (что означает отображение символа c согласно обычным соглашениям об отображении; см. Обычные соглашения об отображении) или вектор кодов глифов (что означает отображение символа c в виде этих глифов; см. Глифы).
Предупреждение: если с помощью таблицы отображения изменить отображение символов новой строки, весь буфер будет отображаться как одна длинная строка.
В таблице отображения также есть шесть дополнительных слотов специального назначения. Ниже приведена таблица с их назначением; значение nil в любом слоте означает, что для этого слота используется значение по умолчанию, указанное ниже.
- 0
-
Глиф для конца усечённой экранной строки (по умолчанию — ‘$’). См. Глифы. На графических терминалах Emacs по умолчанию использует стрелки на полях для обозначения усечения, поэтому таблица отображения не действует, если не отключить поля (см. Поля окна в Руководстве GNU Emacs).
- 1
-
Глиф для конца перенесённой строки (по умолчанию — ‘\’). На графических терминалах Emacs по умолчанию использует изогнутые стрелки на полях для обозначения переноса, поэтому таблица отображения не действует, если не отключить поля.
- 2
-
Глиф, обозначающий символ, отображаемый в виде восьмеричного кода символа (по умолчанию — ‘\’).
- 3
-
Глиф, обозначающий управляющий символ (по умолчанию — ‘^’).
- 4
-
Вектор глифов, обозначающий наличие невидимых строк (по умолчанию — ‘...’). См. Выборочное отображение.
- 5
-
Глиф для отображения границы между окнами, расположенными рядом (по умолчанию — ‘|’). См. Разделение окон. Сейчас он действует только в текстовых терминалах; в графических терминалах, если поддерживаются и используются вертикальные полосы прокрутки, два окна разделяет полоса прокрутки, а если вертикальных полос прокрутки и разделителей нет (см. Разделители окон), Emacs обозначает границу тонкой линией.
- 6 to 11
-
Глифы для однолинейной рамки вокруг дочерних фреймов на терминале в следующем порядке: вертикальный, горизонтальный, нижний правый угол, нижний левый угол, верхний правый угол и верхний левый угол. Горизонтальный глиф также используется в качестве однолинейного разделителя меню tty.
- 12 to 17
-
Глифы для двухлинейной рамки в следующем порядке: вертикальный, горизонтальный, нижний правый угол, нижний левый угол, верхний правый угол и верхний левый угол. Горизонтальный глиф также используется в качестве однолинейного разделителя меню TTY; остальные глифы пока не используются.
Например, вот как создать таблицу отображения, которая имитирует эффект присваивания 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 до 17 включительно или именем слота — символом.
- Функция: set-display-table-slot display-table slot value
Эта функция записывает value в дополнительный слот slot таблицы display-table. Аргумент slot может быть числом от 0 до 17 включительно или именем слота — символом.
Допустимые символы — имена слотов: truncation, wrap, escape, control, selective-display, vertical-border, box-vertical, box-horizontal, box-down-right, box-down-left, box-up-right, box-up-left, box-double-vertical, box-double-horizontal, box-double-down-right, box-double-down-left, box-double-up-right, box-double-up-left.
- Функция: describe-display-table display-table
Эта функция отображает описание таблицы отображения display-table в буфере справки.
- Функция: standard-display-unicode-special-glyphs
Эта функция устанавливает в дополнительных слотах standard-display-table подходящие символы Юникода.
- Команда: describe-current-display-table
Эта команда отображает описание текущей таблицы отображения в буфере справки.
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/Display-Tables.html