Spec-Zone.ru › Elisp

Изменение меню

Когда вы вставляете новый пункт в существующее меню, вы, вероятно, захотите поместить его в определённое место среди существующих пунктов меню. Если вы используете define-key для добавления пункта, он обычно помещается в начало меню. Чтобы поместить его в другое место в меню, используйте define-key-after:

Функция: define-key-after map key binding &optional after

Определяет привязку в map для key со значением binding, так же как и define-key, но позиционирует привязку в map после привязки для события after. Аргумент key должен иметь длину один — вектор или строку с одним элементом. Но after должен быть типом единственного события — символом или символом, а не последовательностью. Новая привязка помещается после привязки для after. Если after является t или опущен, то новая привязка помещается в конец, в конец карты клавиш. Однако новые привязки добавляются перед любой унаследованной картой клавиш.

Вот пример:

(define-key-after my-menu [drink]
  '("Drink" . drink-command) 'eat)

создаёт привязку для фиктивной функциональной клавиши DRINK и помещает её сразу после привязки для EAT.

Вот как вставить пункт с названием «Работа» в меню «Сигналы» режима Shell, после пункта break:

(define-key-after shell-mode-map [menu-bar signals work]
  '("Work" . work-command) 'break)

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/Modifying-Menus.html

Spec-Zone.ru

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