EditorConfig に関してはEditorConfigの公式サイトを参照してください。
「.editorconfig」を検索し、条件にマッチした場合は、指定された設定を現在のファイルに適用するマクロです。
(解析には、"EditorConfig-Core-C" を多少変更して使用しています。)
圧縮ファイル内には、以下のファイルが含まれています。
自動起動マクロ「保存直前と直後」でプロパティ処理を行うサブマクロ。
以下のプロパティの処理を行う。(マクロの設定による)
対応しているプロパティと設定値は、以下になります。
インデントをタブで行うか、スペースで行うかの指定。
設定値
インデントのサイズ。
設定値
タブでインデントを行う場合のサイズ。
indent_size で "tab"が指定された場合に使用する。
indent_size で "tab" 以外が指定され、tab_width の指定がない場合は、indent_size の値がセットされます。 ("EditorConfig-Core-C" の動作)
設定値
改行コードの設定。
設定値
エンコードの指定。以下のエンコードに対応しています。
設定値
行末の空白を削除するか。
設定値
折り返し桁数の設定。
設定値
ファイル末尾が改行でない場合、改行を追加するか。
設定値
ファイルの先頭に設定する必要があります。 true の場合、このフォルダより上にある「.editorconfig」で設定された内容をクリアする。 (現在のファイルの内容をデフォルト値とする)
設定値
このマクロの実行環境は以下になります。
秀丸エディタ Ver.8.30以降
ht_tools.dll Ver.1.22以降
ht_tools.dllは、h-tom's Warehouse - ht_tools.dll から入手できます。
使用している秀丸エディタ本体と同じbit数のDLLを使用してください。
ht_tools.dllを、以下のどこかに置いてください。
また、自動起動マクロを有効にし、「保存直前と直後」に「EditorConfigSet_AutoRun.mac」を指定する必要があります。
既に「保存直前と直後」にマクロを登録している場合は、以下のようなダミーマクロを作り、それを登録してください。
execmacro "既に登録してあったマクロ";
execmacro "EditorConfigSet_AutoRun.mac";
手動または、自動起動マクロの「ファイルを開いた直後」で、マクロを実行してください。編集しているファイルパスのルートフォルダから、「.editorconfig」を検索し、設定を変更します。
設定変更がある場合はダイアログを表示するので、変更するか選択してください。確認なしで変更もできます。
(設定変更にはマクロファイルを直接編集する必要があります。デフォルトは「確認あり」です。)
エンコード、改行コードを変更する場合は、内容を維持したまま変換します。
対象のファイルが編集されていた場合は、そのままマクロを実行するか問い合わせが出ます。
設定を変更した場合、「ファイルタイプ別の設定」は「一時的な設定」になります。
「EditorConfigSet_AutoRun.mac」は、対象が読み取り専用、閲覧モードの場合は処理を行いません。
このマクロには、いくつか設定があります。変更する場合は直接マクロを編集してください。
確認の有無。設定を変更する場合に、事前に確認するか設定します。デフォルトは「確認あり」です。
00005|#confirm = 1; //各種確認を行うかどうか 0:確認なし 1:確認あり
プロパティ設定に自動起動マクロを使用するか。デフォルトは「使う」です。
00006|#autorun = 1; //自動起動マクロを使うかどうか 0:使わない 1:使う
現状、insert_final_newlineプロパティの動作に影響します。詳細は、「insert_final_newline プロパティについて」を参照してください。
trim_trailing_whitespaceプロパティの変更に自動起動マクロを使用するか。デフォルトは「使わない」です。
00007|#autorun_trim = 0; //自動起動マクロを使うかどうか(trim_trailing_whitespace) 0:使わない 1:使う
詳細は、「trim_trailing_whitespace プロパティについて」を参照してください。
プロパティを変更した場合の秀丸エディタの状態を設定する。
プロパティに従い設定を変更すると、秀丸エディタが更新された状態になります。そのまま、更新状態にしておくか、更新状態を強制クリアし解除するかの設定。デフォルトは「解除なし」です。
00008|#updateclear = 0; //編集マークを全て消去して(更新)状態を解除 0:解除なし 1:解除する
「解除する」にした場合、マクロ実行前に更新状態だった箇所を含め全ての更新状態がクリアされます。
秀丸エディタ本体に該当する機能がないため、以下のどちらかの動作になります。
デフォルトは (a.) の動作になりますが、自動起動マクロの設定が必要です。
「行末の空白除去」の機能は、秀丸エディタ本体にありますが、対象は以下になります。
unicode にある「NO-BREAK SPACE」 や 「EN SPACE」 「EM SPACE」は対応していません。
自動起動マクロを使うと 半角スペース 全角スペース タブ に加え、以下の文字にも対応します。
U+00A0 NO-BREAK SPACE
U+2002 EN SPACE
U+2003 EM SPACE
U+2004 THREE-PER-EM SPACE
U+2005 FOUR-PER-EM SPACE
U+2006 SIX-PER-EM SPACE
U+2007 FIGURE SPACE
U+2008 PUNCTUATION SPACE
U+2009 THIN SPACE
U+200A HAIR SPACE
U+200B ZERO WIDTH SPACE
U+FEFF ZERO WIDTH NO-BREAK SPACE
実際の処理は正規表現パターンを使用した置換です。上記以外の文字に対応したい場合は、"EditorConfigSet_AutoRun.mac" にある正規表現パターンの変更で対応できます。
$$trail_regex = @"[ \t \u00a0\u2002-\u200b\uFEFF]+$";
replaceallfast $$trail_regex, "", regular;
正規表現を使った置換なので、カスタマイズも可能です。
「EditorConfigSet.mac」「 EditorConfigSet_AutoRun.mac」 は、プロパティの処理をプロパティと同じ名前の「サブルーチン」で行っています。
既存のプロパティ処理を無効化したい場合は、サブルーチン名を変更するか、チェックモードで戻り値を「0」にしてください。(チェックモードに付いては後述)
独自のプロパティ処理を追加したい場合は、マクロに対応するサブルーチンを追加することで可能になります。
サブルーチン名は秀丸ディタのマクロ仕様上、英数字とアンダースコアのみなので、それ以外の文字は"_"(アンダースコア)に置換されたプロパティ名でサブルーチンを検索します。
サブルーチンの呼び出しは、以下のようになります。
サブルーチンの引数は2個で、以下になります。
##1 フラグ、チェックモード(0)と処理モード(1)の設定
$$2 取得した設定値
チェックモード
プロパティの処理を行うサブルーチンがあるか、確認の為に呼び出すモードです。戻り値が「1」だと、処理モードで呼び出します。戻り値が「1」以外だと、処理モードで呼び出しません。
サブルーチンの存在チェックなので、基本的には戻り値を「1」で返します。
現状は、以下の値を返します。
処理モード
設定値に従い、実際に変更処理を行うモードです。サブルーチン間で情報をやり取りする手段は用意していないので、グローバル変数を使ってください。自動起動マクロを呼び出す場合は、静的な変数にフラグをセットするだけです。