前: Menu Bar, 上: Menu Keymaps


21.12.6 メニューの修正

既存のメニューに新たな項目を挿入するとき、 メニューの既存の項目の特定の場所に挿入したいでしょう。 define-keyで項目を追加すると、通常、メニューの先頭に入ります。 メニューのそれ以外の場所に挿入するには、 define-key-afterを使います。

— 機能: define-key-after map key binding after

keyに対するバインディングbindingmap内に作る。 ただし、map内でのバインディングの位置は、 イベントafterに対するバインディングのあとにする。 引数keyは長さ1、つまり、1要素のみのベクトルか文字列であること。 しかし、afterは1つのイベント型、つまり、 シンボルか文字であり列ではないこと。 新たなバインディングは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)