Spec-Zone.ru › Elisp

Переназначение команд

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

Например, предположим, что режим My предоставляет специальную команду my-kill-line, которая должна вызываться вместо kill-line. Для этого его карта клавиш режима должна содержать следующее переназначение:

(define-key my-mode-map [remap kill-line] 'my-kill-line)

Затем, когда my-mode-map активен, если пользователь набирает C-k (стандартная глобальная последовательность клавиш для kill-line) Emacs вместо этого выполнит my-kill-line.

Обратите внимание, что переназначение происходит только через активные карты клавиш; например, размещение переназначения в карте префиксных клавиш, например, ctl-x-map обычно не оказывает никакого эффекта, так как такие карты клавиш сами по себе не активны. Кроме того, переназначение работает только через один уровень; в следующем примере,

(define-key my-mode-map [remap kill-line] 'my-kill-line)
(define-key my-mode-map [remap my-kill-line] 'my-other-kill-line)

kill-line не переназначается на my-other-kill-line. Вместо этого, если обычная привязка клавиш указывает kill-line, она переназначается на my-kill-line; если обычная привязка указывает my-kill-line, она переназначается на my-other-kill-line.

Чтобы отменить переназначение команды, переназначьте ее на nil; например,

(define-key my-mode-map [remap kill-line] nil)
Функция: command-remapping command &optional position keymaps

Эта функция возвращает переназначение для command (символ), учитывая текущие активные карты клавиш. Если command не переназначен (что обычно и есть), или не является символом, функция возвращает nil. position может необязательно указать позицию буфера или позицию события для определения используемых карт клавиш, как в key-binding.

Если необязательный аргумент keymaps не nil, он указывает список карт клавиш, в которых следует искать. Этот аргумент игнорируется, если position не nil.

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/Remapping-Commands.html

Spec-Zone.ru

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