Spec-Zone.ru › Elisp

Таблицы отображения

Таблица отображения — это специальная таблица символов (см. Таблицы символов), имеющая тип 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

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

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/Display-Tables.html

Spec-Zone.ru

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