Spec-Zone.ru › Elisp

Аргументы команд префикса

Большинство команд Emacs могут использовать аргумент префикса, число, указанное перед самой командой. (Не путайте аргументы префикса с клавишами префикса.) Аргумент префикса в любое время представлен значением, которое может быть nil, что означает, что в настоящее время аргумент префикса отсутствует. Каждая команда может использовать аргумент префикса или игнорировать его.

Существует два представления аргумента префикса: сырое и числовое. Внутренне цикл команд редактора использует сырое представление, как и переменные Lisp, хранящие информацию, но команды могут запросить любое из представлений.

Вот возможные значения сырого аргумента префикса:

  • nil, что означает, что аргумент префикса отсутствует. Его числовое значение равно 1, но многочисленные команды различают nil и целое число 1.
  • Целое число, которое представляет само себя.
  • Список из одного элемента, который является целым числом. Такая форма аргумента префикса возникает в результате одного или нескольких нажатий C-u без цифр. Числовое значение — это целое число в списке, но некоторые команды различают такой список и само по себе целое число.
  • Символ -. Это указывает, что были набраны M-- или C-u - без последующих цифр. Эквивалентное числовое значение равно -1, но некоторые команды различают целое число -1 и символ -.

Мы иллюстрируем эти возможности, вызвав следующую функцию с различными префиксами:

(defun display-prefix (arg)
  "Display the value of the raw prefix arg."
  (interactive "P")
  (message "%s" arg))

Вот результаты вызова display-prefix с различными сырыми аргументами префикса:

        M-x display-prefix  -| nil

C-u     M-x display-prefix  -| (4)

C-u C-u M-x display-prefix  -| (16)

C-u 3   M-x display-prefix  -| 3

M-3     M-x display-prefix  -| 3      ; (Same as C-u 3.)

C-u -   M-x display-prefix  -| -

M--     M-x display-prefix  -| -      ; (Same as C-u -.)

C-u - 7 M-x display-prefix  -| -7

M-- 7   M-x display-prefix  -| -7     ; (Same as C-u -7.)

Emacs использует две переменные для хранения аргумента префикса: prefix-arg и current-prefix-arg. Такие команды, как universal-argument, которые устанавливают аргументы префикса для других команд, хранят их в prefix-arg. В отличие от этого, current-prefix-arg передает аргумент префикса текущей команде, поэтому установка его не влияет на аргументы префикса для будущих команд.

Обычно команды указывают, какое представление использовать для аргумента префикса, числовое или сырое, в спецификации interactive. (См. Использование интерактивного.) В качестве альтернативы функции могут просматривать значение аргумента префикса непосредственно в переменной current-prefix-arg, но это менее удобно.

Функция: prefix-numeric-value arg

Эта функция возвращает числовое значение допустимого значения сырого аргумента префикса, arg. Аргумент может быть символом, числом или списком. Если это nil, возвращается значение 1; если это -, возвращается значение -1; если это число, возвращается это число; если это список, возвращается CAR этого списка (который должен быть числом).

Переменная: current-prefix-arg

Эта переменная содержит сырой аргумент префикса для текущей команды. Команды могут просматривать его непосредственно, но обычный метод доступа к нему — (interactive "P").

Переменная: prefix-arg

Значение этой переменной — сырой аргумент префикса для следующей команды редактирования. Команды, такие как universal-argument, которые задают аргументы префикса для следующей команды, работают путем установки этой переменной.

Переменная: last-prefix-arg

Значение сырого аргумента префикса, используемое предыдущей командой.

Существуют следующие команды для установки аргументов префикса для следующей команды. Не вызывайте их по другим причинам.

Команда: universal-argument

Эта команда считывает входные данные и задает аргумент префикса для следующей команды. Не вызывайте эту команду самостоятельно, если вы не знаете, что делаете.

Команда: digit-argument arg

Эта команда добавляет к аргументу префикса для следующей команды. Аргумент arg — это сырой аргумент префикса, как он был до этой команды; он используется для вычисления обновленного аргумента префикса. Не вызывайте эту команду самостоятельно, если вы не знаете, что делаете.

Команда: negative-argument arg

Эта команда добавляет к числовому аргументу для следующей команды. Аргумент arg — это сырой аргумент префикса, как он был до этой команды; его значение инвертируется для формирования нового аргумента префикса. Не вызывайте эту команду самостоятельно, если вы не знаете, что делаете.

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/Prefix-Command-Arguments.html

Spec-Zone.ru

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