define-minor-mode
w3m-session の改造を考え中。 まずは define-minor-mode の調査から。
describe-function の適当な和訳
define-minor-mode は `easy-mmode.el' で定義されている Lisp マクロ (define-minor-mode MODE DOC &optional INIT-VALUE LIGHTER KEYMAP &rest BODY) MODE という新しいマイナーモードを定義する。この関数は制御変数 MODE キー マップ MODE-map トグルコマンド MODE を定義する。 DOC はモードをトグルするコマンドのドキュメント。 INIT-VALUE はモードの変数の初期値。 (オプション) LIGHTER はモードが ON の時に modeline に表示される。 (オプション) KEYMAP はモードの keymap になるデフォルトの keymap (defvar と同じ動き) リストであれば、 `easy-mmode-define-keymap' にわたされ、正しい keymap が構築される。 一般にはこれを使うよりは MODE-map を別に定義するほうがよい。 キーワド引数が使われると上の3つの引数はスキップされる。 (後述) BODY はモードの ON/OFF が切り替わるたびに実行されるコード。 これはモードが切り替えら、 MODE-hook のフックが実行された後に実行される。 実際のコードを書く前に、 キーワード引数(キーワードと値を交互に書く)を書くことができる。 以下のキーワード引数を使うことができる。 (マイナーモードがグローバルならば、 他のキーワードは `defcustom' にわたされる) :group GROUP `defcustom' で使われる。カスタムグループの名前。 よくある末尾、 "-mode" を除いた MODE がデフォルトである。 グループを明確にしめす `defgroup' を使っていないのならば、 このデフォルトの名前は使わないこと。 :global GLOBAL non-nil ならばマイナーモードが buffer-local でなくなり変数 MODE を buffer-local にしない。 デフォルトではモードは buffer-local になる。 :init-value 引数 INIT-VALUE に同じ。 :lighter SPEC 引数 LIGHTER に同じ。 :keymap MAP 引数 KEYMAP に同じ。 :require SYM `defcustom' のものと同じ。 たとえば、このように書ける。 (define-minor-mode foo-mode "If enabled, foo on you!" :lighter " Foo" :require 'foo :global t :group 'hassle :version "27.5" ...BODY CODE...)
あまり英語が減ったように見えない。