Панель меню
Emacs обычно отображает панель меню в верхней части каждого фрейма. См. Панели меню в Руководстве по GNU Emacs. Элементы панели меню являются подкомандами псевдоключа MENU-BAR, как определено в активных картах управления ключами.
Чтобы добавить элемент в панель меню, придумайте свой собственный псевдоключ (назовём его key) и создайте привязку для последовательности [menu-bar key]. Чаще всего привязкой является карта управления ключами меню, так что нажатие кнопки на элементе панели меню приводит к другому меню.
Когда несколько активных карт управления ключами определяют один и тот же псевдоключ для панели меню, элемент отображается только один раз. Если пользователь нажмёт на этот элемент панели меню, откроется единственное объединённое меню, содержащее все подкоманды этого элемента — глобальные подкоманды, локальные подкоманды и подкоманды специальных режимов.
Переменная overriding-local-map обычно игнорируется при определении содержимого панели меню. То есть, панель меню вычисляется из карт управления ключами, которые были бы активными, если бы overriding-local-map было nil. См. Активные карты управления ключами.
Вот пример настройки элемента панели меню:
;; Make a menu keymap (with a prompt string) ;; and make it the menu bar item’s definition. (define-key global-map [menu-bar words] (cons "Words" (make-sparse-keymap "Words")))
;; Define specific subcommands in this menu.
(define-key global-map
[menu-bar words forward]
'("Forward word" . forward-word))
(define-key global-map
[menu-bar words backward]
'("Backward word" . backward-word))
Локальная карта управления ключами может отменить элемент панели меню, созданный глобальной картой управления ключами, перепривязав тот же псевдоключ с undefined в качестве привязки. Например, так Dired подавляет элемент панели меню «Редактировать»:
(define-key dired-mode-map [menu-bar edit] 'undefined)
Здесь edit — символ, созданный псевдоключом, он используется глобальной картой для элемента панели меню «Редактировать». Основная причина подавления элемента глобальной панели меню — это освобождение места для элементов, специфичных для режима.
-
Обычно панель меню отображает глобальные элементы, за которыми следуют элементы, определённые локальными картами.
Эта переменная содержит список псевдоключа для элементов, которые должны отображаться в конце панели меню, а не в обычном порядке. Значение по умолчанию —
(help-menu); таким образом, элемент меню «Справка» обычно отображается в конце панели меню после локальных элементов меню.
Этот обычный хук вызывается при перерисовке для обновления содержимого панели меню перед повторной перерисовкой панели меню. Вы можете использовать его для обновления содержимого меню, которое должно изменяться. Поскольку этот хук выполняется часто, мы советуем вам убедиться, что функции, которые он вызывает, не занимают много времени в обычном случае.
Рядом с каждым элементом панели меню Emacs отображает привязку ключа, которая выполняет ту же команду (если такая привязка ключа существует). Это служит удобным подсказкой для пользователей, которые не знают привязку ключа. Если команда имеет несколько привязок, Emacs обычно отображает первую найденную. Вы можете указать определённую привязку ключа, назначив свойству команды символ :advertised-binding. См. Клавиши в документации.
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/Menu-Bar.html