Я хотел бы, чтобы в Emacs последовательность ключей FOO была истинным псевдонимом последовательности BAR. Всякий раз, когда вводится FOO, он должен выполнять то же действие, что и ввод BAR.
Я не могу использовать что-то вроде:
(global-set-key (kbd "FOO") (key-binding (kbd "BAR")))
Это связывает FOO с текущим действием для BAR. Если BAR будет позже переназначен или перезаписан или скрыт второстепенным режимом, это не будет отражено FOO.
Я попытался обойти это, используя:
(global-set-key (kbd "FOO")
(lambda ()
(interactive)
(key-binding (kbd "BAR")))
Но это все еще не настоящий псевдоним. Интерактивная спецификация для лямбды не такая, как для действия, к которому привязан BAR. Я полагаю, что могу решить эту проблему с помощью (interactive (advice-eval-interactive ...))
, но это кажется довольно сложным для чего-то, что звучит как базовая функциональность.
Так что, возможно, я пропустил некоторые API Emacs для создания псевдонимов ключей?