############################################################## generic mode (ジェネリックモード) について ############################################################## * generic mode (一般emacsモード) である. * 以下のことができる. + キーワード毎に、色付きのフォントロックを指定できる + モード起動時に関数を起動して、好きな設定を読み込んだりできる. + 拡張子に自動的に判別して、フックできる. + タブサイズやルールなどを指定できる. + スニペットを登録・呼び出しできる. ========================================================= generic mode の作成 ========================================================= .. literalinclude:: ../code/generic_mode_sample.el :caption: generic mode のサンプル (elmer.el) :language: lisp --------------------------------------------------------- generic-x パッケージの呼び出し --------------------------------------------------------- * generic-xパッケージを呼び出す. :: (require 'generic-x) --------------------------------------------------------- リストインタリーブ関数の定義 --------------------------------------------------------- * 文字列リストを展開する関数(リストインタリーブ関数)を定義する. * 次のキーワード群の定義にて使用する. --------------------------------------------------------- キーワード群の定義 --------------------------------------------------------- * 前述のリストインタリーブ関数を用いて、キーワード群を列挙する. * キーワード群は、例えば、 **演算子** , **キーワード** , **括弧** , **メタ命令** など. * リストインタリーブ関数の引数部 "'("[Tt]rue" "[Ff]alse" "[Nn]one")" を変更するだけ. + 正規表現でかけるので、大文字・小文字区別[Aa]や、行頭正規表現"^"などを使用できる. + 正規表現で使用する文字列 "\" "." "*" "+" "?" "{}" "()" "{}" "[]" "^" "$" "-" "|" "/" には、エスケープシーケンスが必要. + エスケープ文字は "\\" を使う ( e.g. "\\.", "\\$", "\\$.*" etc. ). --------------------------------------------------------- フォントフェイスの作成 --------------------------------------------------------- * deffaceにて、faceを作成する. * 基本的には、foreground 文字色を変更すれば足りるはずである. --------------------------------------------------------- generic mode の定義 --------------------------------------------------------- * define-generic-mode 'elmer-mode にて、モードを定義する. (ここでは、elmer-mode を定義). * 指定箇所は、以下である. (1) コメント文字 (2) メインのキーワード(赤とか、既に決まっている配色でキーワードが色つけられる). (3) 詳細のキーワード設定 ( **[重要] 文頭はバッククオートで始める:リストインタリーブ関数使用のため** ) (4) 拡張子の設定: 正規表現で指定 "\\.py$" など (5) 起動時の実行関数:例のように与えても良いし、( my-function )のように、別途定義した関数を呼んでもよい. (6) generic mode呼び出し時に表示されるコメント.:なんでもよい. * キーワードリスト(setqを使用して文字リストとして定義)は最後に付記してある. --------------------------------------------------------- mode の provide --------------------------------------------------------- * おまじない.以下命令でprovideする.:: (provide 'elmer-mode) ========================================================= まとめ ========================================================= * 基本的には、色とキーワードリスト、最初に実行する関数(タブ幅など)を指定すれば良い.