『同じ』コマンドを使いながらオン条件が異なるメニュー項目を
作れると便利なことがあります。
現状のEmacsでこれを行う最良の方法は、拡張メニュー項目を使うことです。
この機能がなかった頃には、コマンドの別名を定義し、
それをメニュー項目で使うことで可能でした。
異なるオン条件でtoggle-read-only
を
使う2つの別名の作り方を以下に示します。
(defalias 'make-read-only 'toggle-read-only) (put 'make-read-only 'menu-enable '(not buffer-read-only)) (defalias 'make-writable 'toggle-read-only) (put 'make-writable 'menu-enable 'buffer-read-only)
メニューに別名を使うときには、
(典型的にはメニュー以外にはキーバインディングがない)別名ではなく
『本物の』コマンド名に対する等価なキーバインディングを
表示しするのがしばしば有用です。
これを行うには、別名のシンボルには
nil
以外の属性menu-alias
を与えます。
(put 'make-read-only 'menu-alias t) (put 'make-writable 'menu-alias t)
こうすると、make-read-only
とmake-writable
のメニュー項目には
toggle-read-only
に対するキーバインディングが表示されます。