23.18.1.1 Простые элементы меню

Более простой (и оригинальный) способ определения элемента меню — это привязка некоторого типа события (неважно, какой тип события) к привязке, подобной этой:

(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 (см. Формат строки состояния).