Emacs モード作成

描主宇田川浩行#F85E
上描き希哲7年(2013年)
08月27日 16:24
下描き希哲7年(2013年)
08月13日 22:31
利承
ライセンス
希哲館普通利承(KULクール

キーバインド関連

make-keymap 関数 を使う方法。リスト形式が簡潔で,大量のキーを定義するのに向く。

例:


(defvar example-mode-map
(let ((keys (make-keymap)))
(define-key keys "\C-c\C-a" 'function-a)
(define-key keys "\C-c\C-b" 'function-b)
keys))

make-sparse-keymap 関数を使う方法。グローバルマップを引き継ぎ少量のキーを定義するのに向く。

例:


(defvar example-mode-map
(let ((keys (make-sparse-keymap)))
(define-key keys "\C-c\C-a" 'function-a)
(define-key keys "\C-c\C-b" 'function-b)
keys))

キーを定義したら,モード本体で (use-local-map *-mode-map) する。

モードの優先順位

キーマップを最優先させる方法

グローバルマップに対し,マイナーモードが優先順位順に優先される。

マイナーモードの優先順位は minor-mode-map-alist で決まる。

example-mode を常に minor-mode-map-alist の頂点におく例:


(setq minor-mode-map-alist
(delete (assq 'example-mode minor-mode-map-alist)
	      minor-mode-map-alist)
minor-mode-map-alist
(cons (cons 'example-mode example-mode-map) minor-mode-map-alist))

use-local-map 関数の前に置くこと。これの後に置くと有効にならない。

この描出は「素描」です。
出力論組プログラム虎哲*イチ 1.1号
制作・運営:希哲社
© Kitetu 1-10 (2007-2016) KiTetuSha