Более простой (и оригинальный) способ определения элемента меню — это привязка некоторого типа события (неважно, какой тип события) к привязке, подобной этой:
(item-string . real-binding)
CAR, item-string, — это строка, которая будет отображаться в меню. Она должна быть короткой — предпочтительно из одного-трех слов. Она должна описывать действие команды, к которой она соответствует. Обратите внимание, что не все графические инструментальные наборы могут отображать не-ASCII текст в меню (это будет работать для клавиатурных меню и в значительной степени с набором GTK+).
Вы также можете указать вторую строку, называемую строкой справки, следующим образом:
(item-string help . real-binding)
help указывает строку справки, которая будет отображаться, пока курсор
находится на этом элементе, подобно свойствам текста help-echo
(см. Отображение справки).
Что касается define-key, то item-string и
help-string являются частью привязки события. Однако lookup-key
возвращает только real-binding, и только real-binding
используется для выполнения клавиши.
Если real-binding равен nil, то item-string
появляется в меню, но не может быть выбран.
Если real-binding является символом и имеет свойство
menu-enable, отличное от nil, это свойство является
выражением, которое контролирует, включен ли элемент меню. Каждый раз, когда карта
клавиш используется для отображения меню, Emacs вычисляет это выражение, и он
включает элемент меню только в том случае, если значение выражения не равно nil. Когда элемент меню отключен, он отображается нечетко и не может
быть выбран.
Панель меню не пересчитывает, какие элементы включены, каждый раз, когда вы
просматриваете меню. Это связано с тем, что инструментарий X требует всего дерева
меню заранее. Чтобы принудительно пересчитать панель меню, вызовите
force-mode-line-update (см. Формат строки состояния).