# EditorConfig プラグイン

異なるエディターや開発環境でのコードの整形と一貫性を確保し、効率的なコーディング環境を提供する、[EditorConfig](https://editorconfig.org/) を Mery で利用できるプラグインです。

## 機能

- コーディング スタイルの統一: プロジェクト内でコーディング スタイルを統一し、異なるエディターや開発環境でのコードの見た目やフォーマットを一貫させます。
- 改行コードの設定: ファイルごとに改行コード (CR+LF、LF、CR) を指定でき、異なるプラットフォーム間での改行コードの違いを解決します。
- エンコーディングの指定: ファイルのエンコーディング (UTF-8、UTF-16、Latin1 など) を設定でき、文字のエンコーディングに関する問題を回避します。
- インデント設定: インデント スタイル (スペースまたはタブ) とインデント幅を指定でき、コードの整形を一貫させます。
- 末尾の空白文字の削除: 行末にある余分な空白文字を自動的に削除し、コードの整理をサポートします。
- ファイルの末尾に改行を追加: ファイルの末尾に自動的に改行を追加または削除でき、異なるエディターとの互換性を向上させます。
- プロジェクトごとの設定: プロジェクトごとに異なる `.editorconfig` ファイルを使用し、プロジェクトごとに独自のコーディング スタイルと設定を適用できます。

## はじめに

**動作環境**
- Windows 11、10、8.1、8、7、Vista、XP をサポートしています。
- Mery v2.8.7 以降をインストールしている必要があります。

**アーカイブに含まれるファイル**
- Plugins/EditorConfig.dll: プラグイン本体
- ThirdPartyNotices.txt: サードパーティ製コンポーネントのライセンス
- eula.html: ソフトウェア使用許諾書
- CHANGELOG.txt: 変更ログ
- README.txt: 本ドキュメント

## インストール

1. アーカイブを展開し、`EditorConfig.dll` を `Mery.exe` のインストール先の `Plugins` フォルダーにコピーしてください。
2. Mery を起動すると、[ツール] メニューの [プラグイン] にインストールしたプラグインの項目が追加されます。

## アップデート

- アーカイブを展開し、`Plugins` フォルダーの内容を Mery の `Plugins` フォルダーに上書きしてください。

## アンインストール

- Mery の `Plugins` フォルダーからアンインストールしたいプラグイン (*.dll) を削除してください。
- 設定ファイルは以下のフォルダーに保存されているため、手動で削除してください。

```
C:\Users\<UserName>\AppData\Roaming\Mery\Plugins\EditorConfig
```

## 使い方

1. Mery を起動すると、自動的に EditorConfig が有効になります。
2. [ツール] メニューから [プラグイン] の [EditorConfig] を選択してプラグインの有効/無効を切り替えることができます。
3. EditorConfig プラグインを有効にした状態でファイルを開くと、`.editorconfig` に記述されたルールが適用されます。
4. EditorConfig の設定が適用されているか確認するためには、EditorConfig プラグインを有効にした状態で、[ツール] メニューの [プラグイン] から [プラグインの設定] を選択し、[EditorConfig] の [プロパティ] をクリックします。

その他、EditorConfig の詳細については[公式サイト](https://editorconfig.org/)をご参照ください。

### .editorconfig の記述方法

ここでは `.editorconfig` の記述方法を簡単にご紹介します。

```
root = true

[*]
indent_style = tab
indent_size = 4
end_of_line = crlf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 80
me_user_defined_guides = 7,8,73
```

**root = true**
- セクションの外側に記述するプロパティです。EditorConfig は、開こうとするファイルと同じ階層の `.editorconfig` から上の階層にさかのぼって `.editorconfig` を検索します。
- このプロパティを true に設定すると、現在の `.editorconfig` で検索を停止します。

**[*]**
- セクション名は、対象とするファイルのパスを指定します。
- この文字列には、ワイルドカードが使用できるようになっており、たとえば、テキストファイルのみを対象にする場合は [*.txt] のように記述します。
- 使用可能なワイルドカードの文字列については、https://editorconfig.org/#wildcards をご参照ください。

**indent_style = tab**
- tab または space を指定して、インデントにタブを使用するか半角空白を使用するかを設定します。
- Mery のオプションでは、[タブの代わりに空白を挿入] に該当します。

**indent_size = 4**
- インデントに使用する桁数またはタブの幅を数値で指定します。
- indent_style が tab の場合でも、このプロパティがタブの幅として使用されます。
- Mery のオプションでは、[タブの桁数] に該当します。
- EditorConfig の仕様では、tab_width プロパティを使用すると、indent_size とは別にタブの幅を設定できるようになっていますが、Mery ではインデントがタブか半角空白にかかわらず、[タブの桁数] は共通なので、tab_width プロパティは使用しません。

**end_of_line = crlf**
- lf、cr、crlf を指定して、改行コードを設定します。

**charset = utf-8**
- latin1、utf-8、utf-8-bom、utf-16be、utf-16le を指定して、文字のエンコードを設定します。

**trim_trailing_whitespace = true**
- 保存する前に改行文字の前にある空白文字を削除する場合は true を設定します。

**insert_final_newline = true**
- 保存する前にファイルの末尾に改行を含むかどうかを指定します。
- このプロパティを指定すると、ファイルの末尾にある改行を削除した後、true の場合は改行を追加し、false の場合は追加しません。
- ファイルの末尾にある改行に手を加えたくない場合は、このプロパティ自体を指定しないか、unset を設定します。

**max_line_length = 80**
- 1 行の最大文字数 (折り返し位置) を指定します。

**me_user_defined_guides = 7,8,73**
- ユーザー定義ガイドの位置を指定します。
- 複数指定する場合は、カンマ区切りで記述します。

## 注意事項

- プロパティ自体が記述されていない場合は、エディター側の設定が適用されます。
- 値に unset を設定すると、そのプロパティの効果が削除され、エディター側の設定が使用されます。
  - たとえば、indent_size = unset と記述すれば、indent_size プロパティが未定義となり、エディター側の設定が適用されます。
  - プロパティの詳細については、https://editorconfig.org/#supported-properties を参照してください。
- `.editorconfig` ファイルは、エンコードを UTF-8 とし、改行コードを CR+LF または LF に設定してください。
- `.editorconfig` が適用されるのは、[ファイルを開いた時] と [ファイルを保存する前] です。
- indent_style と indent_size は、タブを半角空白に変換するなど、文書を自動的に整形するための機能ではありません。
- [ツール] メニューから [プラグイン] の [EditorConfig] を選択してプラグインを無効にした場合でも、既に開いているファイルの設定は保持されます。
- エディター側の設定を適用するためには、開いているファイルを閉じてから再度開く必要があります。

## 利用規約

- 本ソフトウェアおよび本ソフトウェアを含むアーカイブの無断転載、複製、再配布を禁止します。
- 本ソフトウェアの改変、リバース エンジニアリング、逆コンパイルなどの解析行為を禁止します。
- 詳細については、本ソフトウェアに同梱の `eula.html` ファイルをご確認ください。

## 免責事項

- 本ソフトウェアのご利用によって生じた損害やトラブルについて、当方は責任を負いません。
- 不具合の修正には努めますが、バージョンアップや不具合修正について、当方は義務を負いません。
- Mery のバージョンアップにともない、プラグインの仕様は予告なく変更される場合があります。
- 本規約は予告なく変更される場合があります。

## サポート

最新版は [Haijin Boys Online](https://www.haijin-boys.com/) および [BOOTH](https://mery.booth.pm/) で公開しています。ご質問や不具合のご報告については、情報共有のために[フォーラム](https://www.haijin-boys.com/discussions)をご利用ください。

なお、メールや X でのサポートは行っておりません。

## 謝辞

動作検証や開発支援にご協力いただいた皆様、そして Mery を愛用してくださっている皆様に感謝いたします。

## ライセンス

**サードパーティ製コンポーネント**
- [skalogryz/editorConfig](https://github.com/skalogryz/editorConfig)
- [Fluent UI System Icons](https://github.com/microsoft/fluentui-system-icons)

著作権およびライセンスについては、本ソフトウェアに同梱されている `ThirdPartyNotices.txt` ファイルに詳細が記載されています。
