Editorconfigを反映させるマクロ

はじめに

EditorConfig に関してはEditorConfigの公式サイトを参照してください。

「.editorconfig」を検索し、条件にマッチした場合は、指定された設定を現在のファイルに適用するマクロです。
(解析には、"EditorConfig-Core-C" を多少変更して使用しています。)

圧縮ファイル内には、以下のファイルが含まれています。

EditorConfigSet.html
今見ている説明ファイル。
EditorConfigSet.mac
マクロ本体。
EditorConfigSet_AutoRun.mac

自動起動マクロ「保存直前と直後」でプロパティ処理を行うサブマクロ。
以下のプロパティの処理を行う。(マクロの設定による)

対応しているプロパティ

対応しているプロパティと設定値は、以下になります。

indent_style

インデントをタブで行うか、スペースで行うかの指定。

設定値

indent_size

インデントのサイズ。

設定値

tab_width

タブでインデントを行う場合のサイズ。

indent_size で "tab"が指定された場合に使用する。

indent_size で "tab" 以外が指定され、tab_width の指定がない場合は、indent_size の値がセットされます。 ("EditorConfig-Core-C" の動作)

設定値

end_of_line

改行コードの設定。

設定値

charset

エンコードの指定。以下のエンコードに対応しています。

設定値

trim_trailing_whitespace

行末の空白を削除するか。

設定値

max_line_length

折り返し桁数の設定。

設定値

insert_final_newline

ファイル末尾が改行でない場合、改行を追加するか。

設定値

root

ファイルの先頭に設定する必要があります。 true の場合、このフォルダより上にある「.editorconfig」で設定された内容をクリアする。 (現在のファイルの内容をデフォルト値とする)

設定値

使い方

準備

このマクロの実行環境は以下になります。

ht_tools.dllを、以下のどこかに置いてください。

また、自動起動マクロを有効にし、「保存直前と直後」に「EditorConfigSet_AutoRun.mac」を指定する必要があります。

  1. 秀丸エディタ本体メニューの「マクロ」から「マクロ登録」を選ぶ。
  2. 「マクロ登録」ダイアログが開くので、「対象」から「自動起動」を選ぶ。
  3. 「自動起動マクロを有効にする」をチェックする。
  4. 「保存直前と直後」にチェックして、サブマクロ「EditorConfigSet_AutoRun.mac」を指定する。

既に「保存直前と直後」にマクロを登録している場合は、以下のようなダミーマクロを作り、それを登録してください。

execmacro "既に登録してあったマクロ";
execmacro "EditorConfigSet_AutoRun.mac";

マクロの実行

手動または、自動起動マクロの「ファイルを開いた直後」で、マクロを実行してください。編集しているファイルパスのルートフォルダから、「.editorconfig」を検索し、設定を変更します。

マクロの設定

このマクロには、いくつか設定があります。変更する場合は直接マクロを編集してください。

  1. 確認の有無。設定を変更する場合に、事前に確認するか設定します。デフォルトは「確認あり」です。

    00005|#confirm      = 1; //各種確認を行うかどうか                                 0:確認なし   1:確認あり
  2. プロパティ設定に自動起動マクロを使用するか。デフォルトは「使う」です。

    00006|#autorun      = 1; //自動起動マクロを使うかどうか                           0:使わない   1:使う

    現状、insert_final_newlineプロパティの動作に影響します。詳細は、「insert_final_newline プロパティについて」を参照してください。

  3. trim_trailing_whitespaceプロパティの変更に自動起動マクロを使用するか。デフォルトは「使わない」です。

    00007|#autorun_trim = 0; //自動起動マクロを使うかどうか(trim_trailing_whitespace) 0:使わない   1:使う

    詳細は、「trim_trailing_whitespace プロパティについて」を参照してください。

  4. プロパティを変更した場合の秀丸エディタの状態を設定する。

    プロパティに従い設定を変更すると、秀丸エディタが更新された状態になります。そのまま、更新状態にしておくか、更新状態を強制クリアし解除するかの設定。デフォルトは「解除なし」です。

    00008|#updateclear  = 0; //編集マークを全て消去して(更新)状態を解除               0:解除なし   1:解除する

    「解除する」にした場合、マクロ実行前に更新状態だった箇所を含め全ての更新状態がクリアされます。

indent_sizeプロパティについて

insert_final_newlineプロパティについて

秀丸エディタ本体に該当する機能がないため、以下のどちらかの動作になります。

  1. サブマクロを自動起動マクロに登録して、「保存前」にチェック/追加する。
  2. マクロ実行時にチェック/追加する。(ファイル保存時に追加が必要な状況になっても対処できない)

デフォルトは (a.) の動作になりますが、自動起動マクロの設定が必要です。

trim_trailing_whitespace プロパティについて

「行末の空白除去」の機能は、秀丸エディタ本体にありますが、対象は以下になります。

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」にしてください。(チェックモードに付いては後述)

独自のプロパティ処理を追加したい場合は、マクロに対応するサブルーチンを追加することで可能になります。

サブルーチン名は秀丸ディタのマクロ仕様上、英数字とアンダースコアのみなので、それ以外の文字は"_"(アンダースコア)に置換されたプロパティ名でサブルーチンを検索します。

サブルーチンの呼び出しは、以下のようになります。

  1. 取得したプロパティの処理を行うサブルーチンがあるか、取得した全プロパティをチェックモードで呼び出し。
  2. 呼び出しに失敗した(プロパティを処理するサブルーチンがない)場合と、チェックモードで戻り値が1ではないプロパティを除外し、処理モードで呼び出す。

サブルーチンの引数は2個で、以下になります。

##1 フラグ、チェックモード(0)と処理モード(1)の設定
$$2 取得した設定値

注意事項や制限事項など

その他

連絡先

変更履歴

EditorConfigSet.mac

2013/10/31 Ver.1.0.0β1
2015/11/23 Ver.1.0.1β1
2016/09/01 Ver.1.0.2
2016/09/06 Ver.1.0.3
2021/04/19 Ver.2.0.0(未公開)
2021/07/04 Ver.2.0.1
2021/07/08

EditorConfigSet_AutoRun.mac

2021/04/19 Ver.1.0.0