Иногда полезно создавать элементы меню, которые используют одну и ту же
команду, но с разными условиями включения. Лучший способ сделать это
в Emacs сейчас — использовать расширенные элементы меню; до появления этой
функции это можно было сделать, определяя команды-псевдонимы и используя
их в элементах меню. Вот пример, который создает два псевдонима для
read-only-mode и присваивает им разные условия включения:
(defalias 'make-read-only 'read-only-mode) (put 'make-read-only 'menu-enable '(not buffer-read-only)) (defalias 'make-writable 'read-only-mode) (put 'make-writable 'menu-enable 'buffer-read-only)
При использовании псевдонимов в меню часто полезно отображать
эквивалентные привязки клавиш для реального имени команды, а не для
псевдонимов (которые, как правило, не имеют никаких привязок клавиш, кроме
самого меню). Чтобы запросить это, присвойте символу псевдонима свойство
menu-alias, отличное от nil. Таким образом,
(put 'make-read-only 'menu-alias t) (put 'make-writable 'menu-alias t)
элементы меню для make-read-only и make-writable
будут отображать привязки клавиатуры для read-only-mode.