23.18.1 Определение меню

Клавиатурная карта действует как меню, если она имеет общую строку приглашения, которая представляет собой строку, присутствующую в качестве элемента клавиатурной карты. (См. Формат клавиатурных карт.) Строка должна описывать назначение команд меню. Emacs отображает общую строку приглашения как заголовок меню в некоторых случаях, в зависимости от используемого инструментария (если таковой имеется) для отображения меню.19 Клавиатурные меню также отображают общую строку приглашения.

Самый простой способ создать клавиатурную карту со строкой приглашения — указать эту строку в качестве аргумента при вызове make-keymap, make-sparse-keymap (см. Создание клавиатурных карт) или define-prefix-command (см. Определение define-prefix-command). Если вы не хотите, чтобы клавиатурная карта работала как меню, не указывайте для неё строку приглашения.

Функция: keymap-prompt keymap

Эта функция возвращает общую строку приглашения клавиатурной карты keymap или nil, если она отсутствует.

Пункты меню — это привязки в клавиатурной карте. Каждая привязка сопоставляет тип события с определением, однако типы событий не имеют значения для внешнего вида меню. (Обычно мы используем псевдособытия — символы, которые клавиатура не может сгенерировать, — в качестве типов событий для привязок пунктов меню.) Меню полностью формируется на основе привязок, соответствующих в клавиатурной карте этим событиям.

Порядок пунктов в меню соответствует порядку привязок в клавиатурной карте. Поскольку define-key помещает новые привязки в начало, вам следует определять пункты меню, начиная с нижней части меню и продвигаясь к верхней, если вы заботитесь о порядке. При добавлении пункта в существующее меню вы можете указать его позицию в меню с помощью keymap-set-after (см. Изменение меню).


Сноски

(19)

Это обязательно для меню, которые не используют инструментарий, например, на текстовом терминале.