Previous: Extended Menu Items, Up: Defining Menus


21.12.1.3 メニュー項目の別名

『同じ』コマンドを使いながらオン条件が異なるメニュー項目を 作れると便利なことがあります。 現状の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-onlymake-writableのメニュー項目には toggle-read-onlyに対するキーバインディングが表示されます。