Системы кодирования, выбранные пользователем
- Функция: select-safe-coding-system from to &optional default-coding-system accept-default-p file
-
Эта функция выбирает систему кодирования для кодирования указанного текста, спрашивая пользователя о выборе, если это необходимо. Обычно указанный текст — это текст в текущем буфере между from и to. Если from — это строка, строка определяет текст для кодирования, а to игнорируется.
Если указанный текст содержит сырые байты (см. Представления текста),
select-safe-coding-systemпредполагаетraw-textдля его кодирования.Если default-coding-system не
nil, это первая система кодирования, которая будет использована; если она может обработать текст,select-safe-coding-systemвозвращает эту систему кодирования. Она также может быть списком систем кодирования; тогда функция пробует каждую из них по очереди. После попыток всех из них, она затем пробует текущее значение буфераbuffer-file-coding-system(если оно неundecided), затем значение по умолчаниюbuffer-file-coding-systemи, наконец, предпочтительную систему кодирования пользователя, которую пользователь может установить с помощью командыprefer-coding-system(см. Распознавание систем кодирования в Руководстве GNU Emacs).Если одна из этих систем кодирования может безопасно закодировать весь указанный текст,
select-safe-coding-systemвыбирает её и возвращает. В противном случае она просит пользователя выбрать из списка систем кодирования, которые могут закодировать весь текст, и возвращает выбор пользователя.default-coding-system также может быть списком, первым элементом которого является
t, а другими элементами — системами кодирования. Затем, если ни одна система кодирования в списке не может обработать текст,select-safe-coding-systemнемедленно запросит пользователя, не пробуя ни одну из трёх альтернатив, описанных выше. Это удобно для проверки только систем кодирования в списке.Необязательный аргумент accept-default-p определяет, является ли система кодирования, выбранная без взаимодействия с пользователем, приемлемой. Если он опущен или
nil, такой тихий выбор всегда приемлем. Если он неnil, он должен быть функцией;select-safe-coding-systemвызывает эту функцию с одним аргументом, базовой системой кодирования выбранной системы кодирования. Если функция возвращаетnil,select-safe-coding-systemотклоняет выбранную без участия пользователя систему кодирования и просит пользователя выбрать систему кодирования из списка возможных кандидатов.Если переменная
select-safe-coding-system-accept-default-pнеnil, она должна быть функцией, принимающей один аргумент. Она используется вместо accept-default-p, переопределяя любое значение, предоставленное для этого аргумента.В качестве последнего шага, перед возвратом выбранной системы кодирования,
select-safe-coding-systemпроверяет, согласуется ли эта система кодирования с тем, что было бы выбрано, если содержимое области было прочитано из файла. (Если нет, это может привести к повреждению данных в файле, который был посещён и отредактирован позже.) Обычноselect-safe-coding-systemиспользуетbuffer-file-nameв качестве файла для этой цели, но если file неnil, она использует этот файл вместо него (это может быть актуально дляwrite-regionи аналогичных функций). Если она обнаруживает явное несоответствие,select-safe-coding-systemзапросит пользователя перед выбором системы кодирования.
- Переменная: select-safe-coding-system-function
Эта переменная задаёт функцию, которая будет вызываться для запроса у пользователя выбора правильной системы кодирования для кодирования текста, когда система кодирования по умолчанию для операции вывода не может безопасно закодировать этот текст. Значение по умолчанию этой переменной —
select-safe-coding-system. Примитивы Emacs, которые записывают текст в файлы, такие какwrite-region, или отправляют текст другим процессам, такие какprocess-send-region, обычно вызывают значение этой переменной, еслиcoding-system-for-writeне привязано к значению, не являющемусяnil(см. Указание систем кодирования).
Вот две функции, которые вы можете использовать, чтобы позволить пользователю указать систему кодирования с завершением. См. Завершение.
- Функция: read-coding-system prompt &optional default
Эта функция считывает систему кодирования с помощью минибуфера, запрашивая ввод со строкой prompt, и возвращает имя системы кодирования как символ. Если пользователь вводит пустой ввод, default указывает, какую систему кодирования вернуть. Это должен быть символ или строка.
- Функция: read-non-nil-coding-system prompt
Эта функция считывает систему кодирования с помощью минибуфера, запрашивая ввод со строкой prompt, и возвращает имя системы кодирования как символ. Если пользователь пытается ввести пустой ввод, он запросит у пользователя повторный ввод. См. Системы кодирования.
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/User_002dChosen-Coding-Systems.html