Простое меню
Следующая макрокоманда предоставляет удобный способ определения всплывающих меню и/или меню панели меню.
-
Эта макрокоманда определяет всплывающее меню и/или подменю панели меню, содержимое которых задается параметром меню.
Если символ не
nil, он должен быть символом; тогда эта макрокоманда определяет символ как функцию для отображения меню (см. Всплывающие меню), со строкой документации документ. Символ не должен быть заключён в кавычки.Независимо от значения символ, если карты — это карта-ключ, меню добавляется в эту карту-ключ в качестве верхнего уровня меню для панели меню (см. Панель меню). Это также может быть список карт-ключей, в этом случае меню добавляется отдельно в каждую из этих карт-ключей.
Первый элемент меню должен быть строкой, которая служит меткой меню. За ней может следовать любое количество пар ключевых аргументов:
:filter function-
функция должна быть функцией, которая, если вызвана с одним аргументом — списком других элементов меню, возвращает фактические элементы, которые будут отображаться в меню.
:visible include-
включить — это выражение; если оно вычисляется как
nil, меню делается невидимым.:included— это псевдоним для:visible. :active enableвключить — это выражение; если оно вычисляется как
nil, меню не выбирается.:enable— это псевдоним для:active.
Остальные элементы в меню — это элементы меню.
Элемент меню может быть вектором из трёх элементов,
[name callback enable]. название — это имя элемента меню (строка). обработчик_события — это команда для выполнения или выражение для вычисления, когда элемент выбран. включить — это выражение; если оно вычисляется какnil, элемент отключён для выбора.В качестве альтернативы, элемент меню может иметь вид:
[ name callback [ keyword arg ]... ]
где название и обработчик_события имеют те же значения, что и выше, и каждая необязательная пара ключевое_слово и аргумент должна быть одной из следующих:
:keys keys-
ключи — это строка, отображаемая в качестве эквивалента клавиш для элемента меню. Это обычно не требуется, так как эквиваленты клавиш вычисляются автоматически. ключи расширяются с помощью
substitute-command-keysперед отображением (см. Клавиши в документации). :key-sequence keys-
ключи — это подсказка, указывающая, какую последовательность клавиш отображать в качестве эквивалента клавиш, в случае, если команда связана с несколькими последовательностями клавиш. Она не имеет эффекта, если ключи не связаны с той же командой, что и этот элемент меню.
:active enable-
включить — это выражение; если оно вычисляется как
nil, элемент делается невыбираемым.:enable— это псевдоним для:active. :visible include-
включить — это выражение; если оно вычисляется как
nil, элемент делается невидимым.:included— это псевдоним для:visible. :label form-
форма — это выражение, которое вычисляется для получения значения, используемого в качестве метки элемента меню (по умолчанию — название).
:suffix form-
форма — это выражение, которое динамически вычисляется, а его значение конкатенируется с меткой записи меню.
:style style-
стиль — это символ, описывающий тип элемента меню; он должен быть
toggle(флажок), илиradio(кнопка радио), или что-либо еще (означающее обычный элемент меню). :selected selected-
выбран — это выражение; флажок или кнопка радио выбрана, когда значение выражения не
nil. :help helpсправка — это строка, описывающая элемент меню.
В качестве альтернативы, элемент меню может быть строкой. Тогда эта строка появляется в меню как невыбираемый текст. Строка, состоящая из дефисов, отображается как разделитель (см. Разделители меню).
В качестве альтернативы, элемент меню может быть списком с тем же форматом, что и меню. Это подменю.
Вот пример использования easy-menu-define для определения меню, аналогичного тому, которое определено в примере в Панель меню:
(easy-menu-define words-menu global-map
"Menu for word navigation commands."
'("Words"
["Forward word" forward-word]
["Backward word" backward-word]))
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/Easy-Menu.html