############################################################## メジャーモード (1) - 基本と例 - ############################################################## ========================================================= 目的 ========================================================= * **Emacs** では、拡張子毎に 機能・動作・見た目を規定できる.( :blue:`Major Mode` ) * 設定用言語: :red:`*Emacs-Lisp* は難解な言語` . **まともに付き合うのはおすすめしない** . * コピペとChatGPT先生と最小限の変更で、世に言う 「**オレオレモード**」 を :blue:`インスタントに実現すべき` . 本ページの解説目標は、下記. * 拡張子を自動判別し、モードを開く. * 好きなワードをハイライトする. | ========================================================= Emacs-Lisp Major Mode ========================================================= --------------------------------------------------------- サンプルコード --------------------------------------------------------- .. literalinclude:: codes/sample__sif_mode.el :caption: ハイライト用 Major Mode のサンプルコード :linenos: :language: emacs-lisp | --------------------------------------------------------- コード の動作 --------------------------------------------------------- * Major Mode の基本の定義は、 :blue:`( define-generic-mode ... )` を書く. * 次の7つの指定で定義. 1. モード名 ( sif-mode ) 2. コメント行の開始文字 3. とりあえずハイライトする文字列群の指定 4. 詳細なハイライト文字列の指定 5. 反応する拡張子の指定 6. ファイルが開かれた際の自動実行する関数 7. モードの説明文 ( ミニバッファに表示される ) * モード定義部分以外の変更必要箇所は、次の2つ. 1. 変数グループを返却する関数 ( sif-variables-type-operators ) 2. 読み込み時の動作を定義する関数 ( sif-initial-call ) - 変数グループは、関数名 ( グループ名 )と中身の文字列リスト ( '() としてリストを定義 )を変更する. - 動作を定義する関数は好きなように変更して良い.何かパラメータを設定したければ、 --------------------------------------------------------- パラメータ名の指定 --------------------------------------------------------- .. code-block:: (setq パラメータ名 値) * 何も動作が必要無ければ、sif-initial-call の代わりに nil (何もしない)を書いても良い. * 末尾の拡張子へのフックは書かなくても、ファイルを開いた時に自動的に判別される. * 一応、一般のモードフックの方法を示すためにコメントにて記述している.