Кодовые символы для интерактивного ввода
Описания кодовых символов ниже содержат ряд ключевых слов, значения которых определены следующим образом:
- Автодополнение
-
Выполняется автодополнение. TAB, SPC и RET выполняют автодополнение имён, поскольку аргумент считывается с помощью
completing-read(см. Автодополнение). ? отображает список возможных вариантов автодополнения. - Существующий объект
-
Требуется имя существующего объекта. Недопустимое имя не принимается; команды выхода из минибуфера не выполняют выход, если текущий ввод недопустим.
- Значение по умолчанию
-
Если пользователь не вводит текст в минибуфере, используется некоторое значение по умолчанию. Оно зависит от кодового символа.
- Без ввода-вывода
-
Этот кодовый символ вычисляет аргумент без чтения каких-либо входных данных. Поэтому он не использует строку подсказки, и любая указанная вами строка подсказки игнорируется.
Хотя кодовый символ не использует строку подсказки, после него необходимо поставить символ новой строки, если он не является последним кодовым символом в строке.
- Подсказка
-
Подсказка непосредственно следует за кодовым символом. Подсказка заканчивается либо в конце строки, либо символом новой строки.
- Специальный
Этот кодовый символ имеет значение только в начале интерактивной строки; он не ищет подсказку или символ новой строки. Это отдельный, изолированный символ.
Ниже приведены описания кодовых символов, используемых с interactive:
- ‘*’
-
Выдаёт ошибку, если текущий буфер доступен только для чтения. Специальный. Обратите внимание: многие примитивы Emacs выдают ошибку, если команда пытается изменить текст буфера, доступного только для чтения, даже если интерактивная спецификация команды не содержит ‘*’. Поэтому этот символ нужен, когда требуется принудительно выдать ошибку, даже если реализация команды не вызывает примитивов, изменяющих буфер, или когда требуется избежать обработки либо побочных эффектов команды, которая позднее завершится ошибкой из-за изменения буфера. Например, это может быть команда, которая связывает
inhibit-read-onlyс не-nil(поскольку она влияет не только на буферы, доступные только для чтения), или команда, которая в зависимости от условий может в итоге не изменить буфер, но всё равно должна выдать эту ошибку. - ‘@’
-
Выбирает окно, упомянутое в первом событии мыши в последовательности клавиш, вызвавшей эту команду. Специальный.
- ‘^’
-
Если команда была вызвана посредством сдвигового преобразования, устанавливает метку и временно активирует область либо расширяет уже активную область до запуска команды. Если команда была вызвана без сдвигового преобразования, а область временно активна, деактивирует её до запуска команды. Специальный.
- ‘a’
-
Имя функции (то есть символ, удовлетворяющий
fboundp). Существующий объект, автодополнение, подсказка. - ‘b’
-
Имя существующего буфера. По умолчанию используется имя текущего буфера (см. Буферы). Существующий объект, автодополнение, значение по умолчанию, подсказка.
- ‘B’
-
Имя буфера. Буфер может не существовать. По умолчанию используется имя недавно использовавшегося буфера, отличного от текущего. Автодополнение, значение по умолчанию, подсказка.
- ‘c’
-
Символ. Курсор не перемещается в область эха. Подсказка.
- ‘C’
-
Имя команды (то есть символ, удовлетворяющий
commandp). Существующий объект, автодополнение, подсказка. - ‘d’
-
Позиция точки в виде целого числа (см. Точка). Без ввода-вывода.
- ‘D’
-
Каталог. По умолчанию используется текущий каталог по умолчанию текущего буфера,
default-directory(см. Функции раскрытия имён файлов). Существующий объект, автодополнение, значение по умолчанию, подсказка. - ‘e’
-
Первое или следующее не-клавиатурное событие в последовательности клавиш, вызвавшей команду. Точнее, ‘e’ получает события, являющиеся списками, поэтому можно просматривать данные в этих списках. См. События ввода. Без ввода-вывода.
Используйте ‘e’ для событий мыши и специальных системных событий (см. Различные системные события). Список событий, получаемый командой, зависит от события. См. События ввода, где в соответствующих подразделах описаны формы списков для каждого события.
В интерактивной спецификации одной команды можно использовать ‘e’ несколько раз. Если последовательность клавиш, вызвавшая команду, содержит n событий, являющихся списками, то n-й ‘e’ предоставляет n-е такое событие. События, не являющиеся списками, например функциональные клавиши и символы ASCII, не учитываются при обработке ‘e’.
- ‘f’
-
Имя существующего файла (см. Имена файлов). Сведения о значениях по умолчанию см. в разделе Чтение имён файлов. Существующий объект, автодополнение, значение по умолчанию, подсказка.
- ‘F’
-
Имя файла. Файл может не существовать. Автодополнение, значение по умолчанию, подсказка.
- ‘G’
-
Имя файла. Файл может не существовать. Если пользователь вводит только имя каталога, значением будет только это имя каталога, без добавления имени файла в этом каталоге. Автодополнение, значение по умолчанию, подсказка.
- ‘i’
-
Неиспользуемый аргумент. Этот код всегда передаёт в качестве значения аргумента
nil. Без ввода-вывода. - ‘k’
-
Последовательность клавиш (см. Последовательности клавиш). Продолжает чтение событий до тех пор, пока в текущих картах клавиш не будет найдена команда (или неопределённая команда). Аргумент-последовательность клавиш представлен в виде строки или вектора. Курсор не перемещается в область эха. Подсказка.
Если ‘k’ считывает последовательность клавиш, заканчивающуюся событием нажатия, оно также считывает и отбрасывает следующее событие отпускания. Доступ к этому событию отпускания можно получить с помощью кодового символа ‘U’.
Такой тип ввода используется такими командами, как
describe-keyиkeymap-global-set. - ‘K’
-
Последовательность клавиш в форме, которую можно использовать в качестве ввода для таких функций, как
keymap-set. Работает так же, как ‘k’, за исключением того, что для последнего события ввода в последовательности подавляются преобразования, обычно используемые (при необходимости) для преобразования неопределённой клавиши в определённую (см. Ввод последовательностей клавиш). Поэтому эту форму обычно используют, когда запрашивают новую последовательность клавиш для привязки к команде. - ‘m’
-
Позиция метки в виде целого числа. Без ввода-вывода.
- ‘M’
-
Произвольный текст, считываемый в минибуфере с использованием метода ввода текущего буфера и возвращаемый в виде строки (см. Методы ввода в Руководстве GNU Emacs). Подсказка.
- ‘n’
-
Число, считываемое в минибуфере. Если введено не число, пользователь должен повторить ввод. ‘n’ никогда не использует аргумент-префикс. Подсказка.
- ‘N’
-
Числовой аргумент-префикс; если аргумента-префикса нет, считывает число так же, как n. Значение всегда является числом. См. Аргументы-префиксы команд. Подсказка.
- ‘p’
-
Числовой аргумент-префикс. (Обратите внимание: эта ‘p’ — строчная.) Без ввода-вывода.
- ‘P’
-
Необработанный аргумент-префикс. (Обратите внимание: эта ‘P’ — заглавная.) Без ввода-вывода.
- ‘r’
-
Точка и метка в виде двух числовых аргументов, сначала меньший. Это и следующий кодовые символы — единственные, которые задают два последовательных аргумента, а не один. ‘r’ выдаёт ошибку, если метка не установлена в буфере, который является текущим при вызове команды. Если включён режим Transient Mark (см. Метка) — а он включён по умолчанию — и пользовательская опция
mark-even-if-inactiveимеет значениеnil, Emacs выдаёт ошибку, даже если метка установлена, но неактивна. Без ввода-вывода. - ‘R’
-
Точка и метка в виде двух числовых аргументов, сначала меньший, но только если область активна и с ней уместно работать в смысле
use-region-p(см. Область). В противном случае для каждого из двух последовательных аргументов передаётnil. Этот кодовый символ никогда не выдаёт ошибку, поскольку, если метка не установлена,use-region-pпросто возвращает nil. Используйте этот кодовый символ вместо ‘r’ для команд, которые особым образом работают с активной областью. Без ввода-вывода. - ‘s’
-
Произвольный текст, считываемый в минибуфере и возвращаемый в виде строки (см. Чтение текстовых строк с помощью минибуфера). Завершите ввод клавишей C-j или RET. (Чтобы включить любой из этих символов в ввод, можно использовать C-q.) Подсказка.
- ‘S’
-
Интернированный символ, имя которого считывается в минибуфере. Завершите ввод клавишей C-j или RET. Другие символы, обычно завершающие ввод символа (например, пробелы, круглые и квадратные скобки), здесь этого не делают. Подсказка.
- ‘U’
-
Последовательность клавиш или
nil. Можно использовать после аргумента ‘k’ или ‘K’, чтобы получить событие отпускания, отброшенное (если оно было) после того, как ‘k’ или ‘K’ считали событие нажатия. Если событие отпускания не было отброшено, ‘U’ передаёт в качестве аргументаnil. Без ввода-вывода. - ‘v’
-
Переменная, объявленная пользовательской опцией (то есть удовлетворяющая предикату
custom-variable-p). Переменная считывается с помощьюread-variable. См. Определение read-variable. Существующий объект, автодополнение, подсказка. - ‘x’
-
Объект Lisp, заданный в синтаксисе чтения и завершённый клавишей C-j или RET. Объект не вычисляется. См. Чтение объектов Lisp с помощью минибуфера. Подсказка.
- ‘X’
-
Значение формы Lisp. ‘X’ считывает ввод так же, как ‘x’, а затем вычисляет форму, чтобы её значение стало аргументом команды. Подсказка.
- ‘z’
-
Имя системы кодирования (символ). Если пользователь ничего не вводит, значением аргумента становится
nil. См. Системы кодирования. Автодополнение, существующий объект, подсказка. - ‘Z’
Имя системы кодирования (символ), но только если у этой команды есть аргумент-префикс. Без аргумента-префикса ‘Z’ передаёт в качестве значения аргумента
nil. Автодополнение, существующий объект, подсказка.
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/Interactive-Codes.html