Перевод символов
Таблица перевода — это таблица символов (см. Таблицы символов), которая определяет отображение символов друг на друга. Эти таблицы используются при кодировании и декодировании, а также для других целей. Некоторые системы кодирования определяют свои собственные таблицы перевода; также существуют таблицы перевода по умолчанию, которые применяются ко всем остальным системам кодирования.
Таблица перевода имеет два дополнительных слота. Первый — это либо nil, либо таблица перевода, выполняющая обратный перевод; второй — максимальное количество символов для поиска при переводе последовательностей символов (см. описание make-translation-table-from-alist ниже).
- Функция: make-translation-table &rest translations
-
Эта функция возвращает таблицу перевода на основе аргумента translations. Каждый элемент translations должен быть списком элементов вида
(from . to); это означает перевод символа from в to.Аргументы и формы в каждом аргументе обрабатываются в порядке следования, и если предыдущая форма уже переводит to в другой символ, скажем to-alt, то from также переводится в to-alt.
Во время декодирования переводы таблицы перевода применяются к символам, полученным в результате обычного декодирования. Если система кодирования имеет свойство :decode-translation-table, то оно указывает используемую таблицу перевода или список таблиц перевода, которые применяются последовательно. (Это свойство системы кодирования, возвращаемое coding-system-get, а не свойство имени символа, представляющего систему кодирования. См. Основные понятия систем кодирования.) Наконец, если standard-translation-table-for-decode не nil, полученные символы переводятся с помощью этой таблицы.
Во время кодирования переводы таблицы перевода применяются к символам в буфере, а результат перевода фактически кодируется. Если система кодирования имеет свойство :encode-translation-table, то оно указывает используемую таблицу перевода или список таблиц перевода, которые применяются последовательно. Кроме того, если переменная standard-translation-table-for-encode не nil, она указывает используемую таблицу перевода для перевода результата.
- Переменная: standard-translation-table-for-decode
Это таблица перевода по умолчанию для декодирования. Если система кодирования определяет свои собственные таблицы перевода, таблица, которая является значением этой переменной, если она не
nil, применяется после них.
- Переменная: standard-translation-table-for-encode
Это таблица перевода по умолчанию для кодирования. Если система кодирования определяет свои собственные таблицы перевода, таблица, которая является значением этой переменной, если она не
nil, применяется после них.
- Переменная: translation-table-for-input
-
Символы с автоматической вставкой переводятся через эту таблицу перевода перед вставкой. Команды поиска также переводят свой ввод через эту таблицу, чтобы они могли более надёжно сравнивать его с содержимым буфера.
Эта переменная автоматически становится локальной для буфера при установке.
- Функция: make-translation-table-from-vector vec
-
Эта функция возвращает таблицу перевода, созданную из vec, которая представляет собой массив из 256 элементов для сопоставления байтов (значения от 0 до #xFF) с символами. Элементы могут быть
nilдля непереведённых байтов. Возвращаемая таблица имеет таблицу перевода для обратного отображения в первом дополнительном слоте, а значение1— во втором.Эта функция предоставляет простой способ создания частной системы кодирования, которая отображает каждый байт на определённый символ. Вы можете указать возвращаемую таблицу и таблицу обратного перевода, используя свойства
:decode-translation-tableи:encode-translation-tableсоответственно в аргументе props кdefine-coding-system.
- Функция: make-translation-table-from-alist alist
Эта функция аналогична
make-translation-table, но возвращает сложную таблицу перевода вместо простого отображения один к одному. Каждый элемент alist имеет вид(from . to), где from и to являются либо символами, либо векторами, определяющими последовательность символов. Если from — это символ, этот символ переводится в to (то есть в символ или последовательность символов). Если from — это вектор символов, эта последовательность переводится в to. Возвращаемая таблица имеет таблицу перевода для обратного отображения в первом дополнительном слоте и максимальную длину всех последовательностей символов from во втором дополнительном слоте.
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/Translation-of-Characters.html