22.2.2 Символы кодов для interactive

Описания символов кодов ниже содержат ряд ключевых слов, определённых здесь следующим образом:

Дополнение

Обеспечивает дополнение. TAB, SPC и RET выполняют дополнение имени, поскольку аргумент читается с помощью completing-read (см. Дополнение). ? отображает список возможных дополнений.

Существующий

Требует имя существующего объекта. Неверное имя не принимается; команды выхода из минибуфера не завершают работу, если текущий ввод недействителен.

По умолчанию

Значение по умолчанию используется, если пользователь не вводит текст в минибуфере. Значение по умолчанию зависит от символа кода.

Без ввода-вывода

Этот код вычисляет аргумент без чтения какого-либо ввода. Следовательно, он не использует строку приглашения, и любая указанная вами строка приглашения игнорируется.

Даже если код не использует строку приглашения, вы должны поставить после него перевод строки, если он не является последним символом кода в строке.

Приглашение

Приглашение следует непосредственно за символом кода. Приглашение заканчивается либо в конце строки, либо переводом строки.

Специальный

Этот код имеет смысл только в начале интерактивной строки и не ищет приглашение или перевод строки. Это одиночный, изолированный символ.

Ниже приведены описания символов кодов для использования с interactive:

‘*’

Сигнализирует об ошибке, если текущий буфер доступен только для чтения. Специальный.

‘@’

Выбирает окно, указанное в первом событии мыши в последовательности клавиш, вызвавшей эту команду. Специальный.

‘^’

Если команда была вызвана через shift-трансляцию, устанавливает метку и временно активирует область, или расширяет уже активную область, перед выполнением команды. Если команда была вызвана без shift-трансляции, и область временно активна, деактивирует область перед выполнением команды. Специальный.

‘a’

Имя функции (т.е. символа, удовлетворяющего fboundp). Существующий, Дополнение, Приглашение.

‘b’

Имя существующего буфера. По умолчанию используется имя текущего буфера (см. Буферы). Существующий, Дополнение, По умолчанию, Приглашение.

‘B’

Имя буфера. Буфер может не существовать. По умолчанию используется имя недавно использованного буфера, отличного от текущего. Дополнение, По умолчанию, Приглашение.

‘c’

Символ. Курсор не перемещается в область эха. Приглашение.

‘C’

Имя команды (т.е. символа, удовлетворяющего commandp). Существующий, Дополнение, Приглашение.

‘d’

Позиция точки в виде целого числа (см. Точка). Без ввода-вывода.

‘D’

Каталог. По умолчанию используется текущий каталог по умолчанию текущего буфера — default-directory (см. Функции, раскрывающие имена файлов). Существующий, Дополнение, По умолчанию, Приглашение.

‘e’

Первое или следующее неклавиатурное событие в последовательности клавиш, вызвавшей команду. Точнее, ‘e’ получает события, являющиеся списками, поэтому вы можете просматривать данные в списках. См. События ввода. Без ввода-вывода.

Вы используете ‘e’ для событий мыши и специальных системных событий (см. Прочие системные события). Список событий, который получает команда, зависит от события. См. События ввода, где описаны формы списка для каждого события в соответствующих подразделах.

Вы можете использовать ‘e’ более одного раза в спецификации interactive одной команды. Если последовательность клавиш, вызвавшая команду, содержит 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’

Точка и метка в виде двух числовых аргументов, сначала меньший. Это единственный символ кода, который задаёт два последовательных аргумента вместо одного. Сигнализирует об ошибке, если метка не установлена в буфере, который является текущим при вызове команды. Если режим Transient Mark включён (см. Метка) — а по умолчанию он включён — и пользовательская опция mark-even-if-inactive равна nil, Emacs сигнализирует об ошибке, даже если метка установлена, но неактивна. Без ввода-вывода.

‘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 в качестве значения аргумента. Дополнение, Существующий, Приглашение.