Spec-Zone.ru › Elisp

Функции поиска по ключу

Ниже приведены функции и переменные, относящиеся к поиску по ключу.

Функция: lookup-key keymap ключ &optional accept-defaults

Эта функция возвращает определение ключа в keymap. Все остальные функции, описанные в этой главе, которые ищут ключи, используют lookup-key. Вот примеры:

(lookup-key (current-global-map) "\C-x\C-f")
    ⇒ find-file
(lookup-key (current-global-map) (kbd "C-x C-f"))
    ⇒ find-file
(lookup-key (current-global-map) "\C-x\C-f12345")
    ⇒ 2

Если строка или вектор ключ не является допустимой последовательностью ключей в соответствии с префиксными ключами, указанными в keymap, то она слишком длинная и содержит дополнительные события в конце, которые не помещаются в одну последовательность ключей. Тогда значение является числом, количеством событий в начале ключа, которые составляют полный ключ.

Если accept-defaults не nil, то lookup-key учитывает настройки по умолчанию, а также настройки для конкретных событий в ключе. В противном случае lookup-key сообщает только о настройках для конкретной последовательности ключ, игнорируя настройки по умолчанию, за исключением случаев, когда вы их явно запрашиваете. (Для этого предоставьте t как элемент ключа; см. Формат ключевых карт.)

Если ключ содержит мета-символ (не функциональный ключ), этот символ неявно заменяется на двузначную последовательность: значение meta-prefix-char, за которым следует соответствующий не мета-символ. Таким образом, первый пример ниже обрабатывается преобразованием во второй пример.

(lookup-key (current-global-map) "\M-f")
    ⇒ forward-word
(lookup-key (current-global-map) "\ef")
    ⇒ forward-word

Аргумент keymap также может быть списком ключевых карт.

В отличие от read-key-sequence, эта функция не изменяет указанные события таким образом, чтобы отбрасывать информацию (см. Ввод последовательности ключей). В частности, она не преобразует буквы в нижний регистр и не изменяет события перетаскивания на щелчки.

Команда: undefined

Используется в ключевых картах для отмены определения ключей. Она вызывает ding, но не вызывает ошибку.

Функция: local-key-binding ключ &optional accept-defaults

Эта функция возвращает настройку для ключа в текущей локальной ключевой карте или nil, если она там не определена.

Аргумент accept-defaults управляет проверкой настроек по умолчанию, как и в lookup-key (выше).

Функция: global-key-binding ключ &optional accept-defaults

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

Аргумент accept-defaults управляет проверкой настроек по умолчанию, как и в lookup-key (выше).

Функция: minor-mode-key-binding ключ &optional accept-defaults

Эта функция возвращает список всех активных настроек ключа ключ в режиме меньшей важности. Точнее, она возвращает список пар (modename . binding), где modename — переменная, которая включает режим меньшей важности, а binding — настройка ключа в этом режиме. Если у ключа нет настроек в режиме меньшей важности, значение равно nil.

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

Аргумент accept-defaults управляет проверкой настроек по умолчанию, как и в lookup-key (выше).

Параметр пользователя: meta-prefix-char

Эта переменная содержит код символа мета-префикса. Она используется для преобразования мета-символа в двузначную последовательность, чтобы ее можно было искать в ключевой карте. Для получения полезных результатов значение должно быть префиксным событием (см. Префиксные ключи). Значение по умолчанию равно 27, что соответствует коду ASCII для ESC.

Пока значение meta-prefix-char остается равным 27, поиск по ключу преобразует M-b в ESC b, что обычно определяется как команда backward-word. Однако, если вы установите meta-prefix-char в 24, код для C-x, то Emacs преобразует M-b в C-x b, стандартная настройка которого — команда switch-to-buffer. (Не делайте этого на самом деле!) Вот иллюстрация того, что произойдет:

meta-prefix-char                    ; The default value.
     ⇒ 27
(key-binding "\M-b")
     ⇒ backward-word
?\C-x                               ; The print representation
     ⇒ 24                          ;   of a character.
(setq meta-prefix-char 24)
     ⇒ 24
(key-binding "\M-b")
     ⇒ switch-to-buffer            ; Now, typing M-b is
                                    ;   like typing C-x b.

(setq meta-prefix-char 27)          ; Avoid confusion!
     ⇒ 27                          ; Restore the default value!

Это преобразование одного события в два происходит только для символов, а не для других типов событий ввода. Таким образом, M-F1, функциональная клавиша, не преобразуется в ESC F1.

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/Functions-for-Key-Lookup.html

Spec-Zone.ru

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