23.18.7 Изменение меню

Когда вы добавляете новый элемент в существующее меню, вы, вероятно, хотите поместить его в определенное место среди существующих элементов меню. Если вы используете define-key для добавления элемента, он обычно помещается в начало меню. Чтобы поместить его в другое место в меню, используйте keymap-set-after:

Функция: keymap-set-after map key binding &optional after

Определяет привязку в map для key со значением binding, подобно keymap-set (см. Изменение привязок клавиш), но позиционирует привязку в map после привязки для события after. Аргумент key должен представлять собой один элемент меню или клавишу и должен удовлетворять key-valid-p (см. Последовательности клавиш). after должен быть одним типом события — символом или символом, а не последовательностью. Новая привязка добавляется после привязки для after. Если after равно t или опускается, то новая привязка добавляется последней, в конце карты клавиш. Однако новые привязки добавляются перед любой унаследованной картой клавиш.

Вот пример:

(keymap-set-after my-menu "<drink>"
  '("Drink" . drink-command) 'eat)

создает привязку для фиктивной функции клавиши DRINK и помещает ее сразу после привязки для EAT.

Вот как вставить элемент под названием «Work» в меню «Signals» в режиме Shell после элемента break:

(keymap-set-after shell-mode-map "<menu-bar> <signals> <work>"
  '("Work" . work-command) 'break)