Next: , Previous: , Up: Menu Keymaps   [Contents][Index]


21.17.7 メニューの変更

既存のメニューに新たなアイテムを挿入するときは、そのメニューの既存のアイテムの中の特定の位置にアイテムを追加したいと思うかもしれません。define-keyを使用してアイテムを追加すると、そのアイテムは通常はメニューの先頭に追加されます。メニュー内の他の位置にアイテムを追加するにはdefine-key-afterを使用します:

Function: define-key-after map key binding &optional after

define-keyと同じようにmap内にkeyにたいする値bindingのバインディングを定義するが、map内でのバインディング位置はイベントafterのバインディングの後になる。引数keyは長さ1 — 1要素だけのベクターか文字列にすること。しかしafterは単一のイベント型 — シーケンスではないシンボルか文字にすること。新たなバインディングはafterのバインディングの後に追加される。aftertまたは省略された場合には、新たなバインディングはそのキーマップの最後に追加される。しかし新たなバインディングは継承されたすべてのキーマップの前に追加される。

以下は例:

(define-key-after my-menu [drink]
  '("Drink" . drink-command) 'eat)

これは偽ファンクションキーDRINKのバインディングを作成して、EATのバインディングの直後に追加する。

以下はShellモードの‘Signals’メニュー内のアイテムbreakの後に‘Work’と呼ばれるアイテムを追加する方法:

(define-key-after
  (lookup-key shell-mode-map [menu-bar signals])
  [work] '("Work" . work-command) 'break)