テキストエディター「Mery」ベータ版 Ver 2.8.8 を公開、EditorConfig に対応

テキストエディター「Mery」ベータ版 Ver 2.8.8 を公開、EditorConfig に対応

みなさん、ベータ検証のご協力ありがとうございます。

先月、フォーラムのご意見で EditorConfig なるものを教えていただきまして、調べてみましたところこれがなかなか面白そうな仕組みで、Mery の仕様上、対応が難しかった部分を改善できる可能性があるものだったので実装してみました。

EditorConfig というのはインデントや改行コードなどの設定を様々なエディターや統合開発環境の間で統一するための仕組みです。

プロジェクトやコードベースごとにエディターの設定を定義したファイル (.editorconfig) を用意しておけば、ファイルを開いたときに自動的にその定義に基づいた設定が反映されます。

Mery はオプション画面を一本化している都合上、編集モードやファイルごとにインデントや改行コードの設定を分けることができませんでしたが、EditorConfig を導入することで改善されます。

ところで、いつでもどこでも読み放題の Kindle Unlimited、無料体験登録はこちら。

スポンサーリンク

EditorConfig の使い方

Mery で EditorConfig を使うためには EditorConfig プラグインが必要です。MeryWiki で公開していますので、EditorConfig プラグインをダウンロードしてインストールしてください。

参考 プラグイン:EditorConfig - MeryWiki

.editorconfig を用意しよう

EditorConfig を使うためには設定を定義したファイル .editorconfig が必要です。設定を適用したいフォルダーに .editorconfig という名前でファイルを作成してください。

.editorconfig を用意しよう

エクスプローラーで右クリックし [新規作成] から [テキスト ドキュメント] を選択して空のテキストファイルを作成します。

作成された 「新しいテキスト ドキュメント」 のファイル名を拡張子無しの .editorconfig に変更します。

Windows のバージョンによっては「ファイル名を入力してください」というエラーが発生することがあります。

その場合、Windows 7 ではファイル名を .editorconfig. (後ろにドットを付ける) とすれば自動的に .editorconfig に変更されます。

または Mery でファイルを新規作成して [名前を付けて保存] で [ファイルの種類] を [すべてのファイル] にすれば .editorconfig という名前で保存することができます。

.editorconfig を記述しよう

.editorconfig をテキストエディターで開いて設定を記述します。ここでは基本的な記述方法を紹介しますが、詳しくは EditorConfig の公式サイト (https://editorconfig.org/) をご参照ください。

.editorconfig
root = true

[*.txt]
indent_style = tab
indent_size = 4
end_of_line = crlf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

ファイルの形式としては INI ファイルと似ていて、[*.txt] の部分がセクション、indent_style = tab の部分がプロパティと値です。

  • root = true

    セクションの外側に記述するプロパティです。EditorConfig は開こうとするファイルと同じ階層の .editorconfig から上の階層にさかのぼって .editorconfig を検索します。

    このプロパティを true に設定すると、現在の .editorconfig で検索を停止します。

  • [*.txt]

    セクション名は対象とするファイルのパスを指定します。この文字列はワイルドカードが使用できるようになっており、例えばテキストファイルのみを対象にする場合は [*.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 を設定します。

indent_style, indent_size はタブを半角空白に変換したりなど、文書を自動的に整形するための機能ではありません。

プロパティの詳細は https://editorconfig.org/#supported-properties をご参照ください。

設定を記述したら .editorconfig ファイルを保存します。ファイルのエンコードは UTF-8、改行コードは CR+LF または LF としてください。

これで準備は完了です。

あとは Mery で .editorconfig を配置したフォルダーの配下にあるファイルを開けば、.editorconfig に記述したルールが自動的に適用されます。

.editorconfig を活用しよう

例えば、ファイルの拡張子ごとなどに設定を分けたい場合は .editorconfig を以下のように記述することができます。

.editorconfig
# これより上の階層の .editorconfig を検索しないようにする
root = true

# すべてのファイルの改行コードを CR+LF、エンコードを UTF-8 (BOM 無し) にする
[*]
end_of_line = crlf
charset = utf-8

# 拡張子が pas のファイルはインデントを半角空白 2 つにする
[*.pas]
indent_style = space
indent_size = 2

# 拡張子が js のファイルはインデントをタブで幅 4 にする
[*.js]
indent_style = tab
indent_size = 4

# 拡張子が html のファイルは改行文字の前にある空白文字を削除して最後に改行を付加する
[*.html]
trim_trailing_whitespace = true
insert_final_newline = true

対象のファイル名はワイルドカードが使用できる

.editorconfig に記述するセクション名 (対象となるファイル名) として使用できるワイルドカードの例を挙げておきます。

[*]すべてのファイル
[*.js]拡張子が js のファイル
[*.{js,py}]拡張子が js または py のファイル
[Makefile]名前が Makefile のファイル
[lib/*.js]lib フォルダー直下の拡張子が js のファイル
[lib/**.js]lib フォルダー配下の拡張子が js のファイル

.editorconfig の設定は階層化することができる

.editorconfig を配置するとそのフォルダーの配下にあるすべてのファイルに .editorconfig の設定が適用されますが、下の階層のフォルダーに .editorconfig を配置すれば EditorConfig の設定を上書き (オーバーライド) することができます。

.editorconfig を活用しよう

下の階層のフォルダーに .editorconfig を配置すると、その階層とその配下のフォルダー内のファイルに新しい設定が上書きで適用されます。

図のように .editorconfig が配置されていない Project2 フォルダー内のファイルには上の階層に配置されている Projects フォルダー直下の .editorconfig が適用されます。

その階層より上の .editorconfig を参照しないようにするためには .editorconfig に root = true を記述します。

このように EditorConfig をフォルダーごとに用意することでファイルごとに細かく設定を分けたり、プロジェクトやコードベースごとに設定を統一したりすることができるようになります。

更新内容

本バージョンではいくつかの不具合修正や機能改善が含まれています。現在お使いのバージョンで問題がある場合はバージョンアップで改善されるかもしれません。

2019/12/24

  • [保存する前に改行文字の前にある空白文字を削除] と [保存する前にファイルが改行で終了するようにする] で変更行をなるべく保持するようにしてみた
  • [保存する前にファイルが改行で終了するようにする] の挙動を修正
  • スクロールバーの右端あたりをダブルクリックしたときに新しいタブが作成されていたのを修正
  • インストーラーを管理者権限で実行しないときのインストール先を C:\Users\UserName\AppData\Local\Programs\Mery に変更
  • 項目名などを "Microsoft スタイル ガイド" になるべく合わせた
  • リードミーを README.txt、変更ログを CHANGELOG.txt にした
  • その他、細かい修正

2019/11/20

  • タブの閉じるボタンを [ウィンドウの右端] にした状態でアウトラインのサイズを変更したときにエディター側がリサイズされない問題を修正
  • アウトラインでノードをダブルクリックしたときに展開・縮小しないようにした
  • アウトラインの解析速度を少し高速化
  • ファイルから置換で正規表現のファイルの先頭 (\A) にヒットしなかったのを修正
  • タブの右クリックメニューに [新しいウィンドウに移動] を追加
  • 引用付き貼り付けで最終行が 1 文字だけの場合に正常に貼り付かない問題を修正
  • タブの桁数の最大値を 255 までいけるようにした
  • 無題のファイルでステータスバーから書き換え禁止が動作しなかったのを修正
  • マウスホイールクリックでタブを閉じたときにアクティブな文書にフォーカスを戻すようにした
  • クリップボードのアクセスエラー発生時に 3 回までリトライするようにした
  • 引用マークの初期値を "> " にした
  • プラグインメソッドの Editor_Info に以下のコマンドを追加

    • MI_GET_INDENT_STYLE
      [タブの代わりに空白を挿入]の有効・無効を取得
    • MI_SET_INDENT_STYLE
    • [タブの代わりに空白を挿入]の有効・無効を設定
    • MI_GET_INDENT_SIZE
      [タブの桁数]を取得
    • MI_SET_INDENT_SIZE
      [タブの桁数]を設定
    • MI_GET_TRIM_TRAILING_WHITESPACE
      [保存する前に改行文字の前にある空白文字を削除]の有効・無効を取得
    • MI_SET_TRIM_TRAILING_WHITESPACE
      [保存する前に改行文字の前にある空白文字を削除]の有効・無効を設定
    • MI_GET_INSERT_FINAL_NEWLINE
      [保存する前にファイルが改行で終了するようにする]の有効・無効を取得
    • MI_SET_INSERT_FINAL_NEWLINE
      [保存する前にファイルが改行で終了するようにする]の有効・無効を設定
  • その他、細かい修正

ダウンロード

レジストリを一切使用しない ZIP 版、レジストリを使用しますが導入が簡単なインストーラー版、設定ファイルを外部に作成しないポータブル版を用意しています。

ZIP 版

アーカイブを解凍するだけですぐに使える ZIP 版です。

Mery Ver 2.8.8 (32 ビット版) ZIP Mery Ver 2.8.8 (64 ビット版) ZIP

インストーラ版

解凍などの作業が必要なく簡単に使えるインストーラ版です。

Mery Ver 2.8.8 (32 ビット版) インストーラ Mery Ver 2.8.8 (64 ビット版) インストーラ
VirusTotal で誤検出されたり SmartScreen で保護されたりしますが、もちろんウイルスではありません。ご心配なかたは正式版が Vector さんか窓の杜さんで公開されるまでお待ちください。

ポータブル版

インストールは不要。通常の ZIP 版と異なり設定ファイルを外部に作成しないので USB メモリに保存して持ち歩けますし、PC 環境を汚すこともありません。

Mery Ver 2.8.8 (32 ビット版) ポータブル Mery Ver 2.8.8 (64 ビット版) ポータブル
ポータブル版は解凍したフォルダの中に、設定ファイルなどのすべてのデータを保存しますので、必ずアクセス権のあるフォルダに配置してください。

おわりに

お久しぶりです、Mery を開発している者です。

おわりに

前回の更新から 2 ヶ月以上経過してしまいましたが、このブログを見てくださっているみなさん、ありがとうございます。

EditorConfig 対応ということで、私は今回、初めてこのような規格を知りましたが随分昔から存在している規格だったのですね。

実装にあたって、EditorConfig を標準機能にするかプラグインにするかという点は非常に悩ましいところでした。

Visual Studio のような統合開発環境では標準機能として組み込まれているものもあるようですが、Notepad++ や Sublime Text のようなテキストエディターではプラグインや拡張機能で対応されているものが多いようですから、Mery でもプラグイン方式を採用することにしました。

…とは言っても、従来の Mery の仕様では EditorConfig に対応することが難しく、本体側に機能を追加することでなんとか対応できた状態です。本バージョン未満の Mery では EditorConfig プラグインが動作ませんが、その点はご了承くださいませ。

スポンサーリンク

関連する記事

フォローする