Когда вы добавляете новый элемент в существующее меню, вы, вероятно, хотите поместить его в определенное место среди существующих элементов меню. Если вы используете define-key для добавления элемента, он обычно помещается в начало меню. Чтобы поместить его в другое место в меню, используйте keymap-set-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)