Next: , Previous: Format of Keymaps, Up: Keymaps


21.3 キーマップの作成

ここでは、キーマップを作成するための関数について述べます。

— Function: make-keymap &optional prompt

この関数は新たに完全なキーマップ (つまり、すべてのASCII文字に対する定義を収めた 長さ128のベクトル)を作成しそれを返す。 新たなキーマップでは、すべてのASCII文字に対するバインディングは nilであり、それ以外の種類のイベントに対するバインディングはない。

          (make-keymap)
               (keymap [nil nil nil ... nil nil])

promptを指定すると、 それはキーマップに対する全面プロンプト文字列になる。 全面プロンプト文字列はメニューキーマップ (see Menu Keymaps)に有用である。

— Function: make-sparse-keymap &optional prompt

この関数は、新たに空の疎なキーマップを作成しそれを返す。 新たなキーマップにはイベントに対するバインディングはいっさいない。 引数promptは、make-keymapの場合同様、 プロンプト文字列を指定する。

          (make-sparse-keymap)
               (keymap)
— Function: copy-keymap keymap

この関数はkeymapのコピーを返す。 keymapにバインディングとして直接現れる任意のキーマップも 任意のレベルまで再帰的にコピーされる。 しかし、文字に対する定義が、その関数定義がキーマップであるような シンボルに出会うと再帰的なコピーを行わないため、 同じシンボルが新たなコピーにも現れる。

          (setq map (copy-keymap (current-local-map)))
           (keymap
          
               ;; (これはメタ文字を意味する)
               (27 keymap
                   (83 . center-paragraph)
                   (115 . center-line))
               (9 . tab-to-tab-stop))
          
          (eq map (current-local-map))
               nil
          (equal map (current-local-map))
               t