Клавиатурная карта действует как меню, если она имеет общую строку приглашения, которая представляет собой строку, присутствующую в качестве элемента клавиатурной карты. (См. Формат клавиатурных карт.) Строка должна описывать назначение команд меню. Emacs отображает общую строку приглашения как заголовок меню в некоторых случаях, в зависимости от используемого инструментария (если таковой имеется) для отображения меню.19 Клавиатурные меню также отображают общую строку приглашения.
Самый простой способ создать клавиатурную карту со строкой приглашения — указать
эту строку в качестве аргумента при вызове make-keymap,
make-sparse-keymap (см. Создание клавиатурных карт) или
define-prefix-command (см. Определение define-prefix-command).
Если вы не хотите, чтобы клавиатурная карта работала как меню, не указывайте для неё строку приглашения.
Эта функция возвращает общую строку приглашения клавиатурной карты keymap
или nil, если она отсутствует.
Пункты меню — это привязки в клавиатурной карте. Каждая привязка сопоставляет тип события с определением, однако типы событий не имеют значения для внешнего вида меню. (Обычно мы используем псевдособытия — символы, которые клавиатура не может сгенерировать, — в качестве типов событий для привязок пунктов меню.) Меню полностью формируется на основе привязок, соответствующих в клавиатурной карте этим событиям.
Порядок пунктов в меню соответствует порядку привязок в клавиатурной карте.
Поскольку define-key помещает новые привязки в начало, вам следует
определять пункты меню, начиная с нижней части меню и продвигаясь к верхней,
если вы заботитесь о порядке. При добавлении пункта в существующее меню вы можете
указать его позицию в меню с помощью keymap-set-after
(см. Изменение меню).
Это обязательно для меню, которые не используют инструментарий, например, на текстовом терминале.