既存のメニューに新たな項目を挿入するとき、
メニューの既存の項目の特定の場所に挿入したいでしょう。
define-key
で項目を追加すると、通常、メニューの先頭に入ります。
メニューのそれ以外の場所に挿入するには、
define-key-after
を使います。
keyに対するバインディングbindingをmap内に作る。 ただし、map内でのバインディングの位置は、 イベントafterに対するバインディングのあとにする。 引数keyは長さ1、つまり、1要素のみのベクトルか文字列であること。 しかし、afterは1つのイベント型、つまり、 シンボルか文字であり列ではないこと。 新たなバインディングはafterに対するバインディングのうしろに入る。 afterが
t
であると、新たなバインディングは最後、 つまり、キーマップの末尾に入る。例を示す。
(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)