【要望】 ファイル保存時の小技機能

  1. 僭越ながら、ご検討くだされば幸いです。

     ・ファイル作成終了で画面を閉じたら「行末以降の空白を除去する」機能
     ・最終行に改行が入っていないで、保存終了した時に「自動的に改行を付加する」機能

    ---
    Mery: 3.7.16 (x86)
    Onigmo: 6.2.0
    C/Migemo: 1.3
    Tidy: 5.8.0
    Hunspell: 1.7.1
    uchardet: 0.0.8
    アウトライン: 3.2.3 (Outline.dll)
    お気に入り: 2.4.0 (Favorites.dll)
    OS: Windows 10 (Version 22H2, OS Build 19045.4780, 64-bit Edition)

     |  Peggy  |  返信
  2. 公式プラグインの「EditorConfig」でできそうですね。

    https://www.haijin-boys.com/wiki/プラグイン:EditorConfig

    trim_trailing_whitespace insert_final_newline の設定でご希望の動作になるんじゃないでしょうか。

     |  yuko  |  返信
  3. ご教示、感謝します。
    早速 EditorConfig.dll を入手してMeryの Plug-in フォルダに投入して、設定ファイルを以下のようにして、同じ Plug-in フォルダに投入しましたが反映されず、「ツール→プラグイン→プラグインの設定→EditorConfig→プロパティ」と進んでも、「現在の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

     |  Peggy  |  返信
  4. 設定ファイル名を間違えたり、Shift-JISで保存したり、間違いだらけでした。
    https://editorconfig.org/ を読んで見たいと思います。
    C:\Users\(ユーザ名)\AppData\Local\Programs\Mery\Plugins\.editorconfig

     |  Peggy  |  返信
  5. yuko さん、いつもサポートへのご協力ありがとうございます。

    Peggy さん、Mery をご愛用いただきありがとうございます。

    ご紹介いただいたとおり、EditorConfig プラグインでご希望の機能が実現できそうですね。

    ほかの方法として、マクロを使ってこの機能を有効にすることも可能です。

    document.TrimTrailingWhiteSpace = true;
    document.InsertFinalNewLine = meTriBoolTrue;
    

    このマクロを実行すると、現在の文書に対して保存時に「行末の空白を自動で削除」し、「文末に改行を追加する」設定が適用されます。

    常にこの設定を適用したい場合は、イベント [アクティブな文書が変更された時] あたりにこのマクロを登録しておくとよいかと思います。

     |  Kuro  |  返信
  6. > ほかの方法として、マクロを使ってこの機能を有効にすることも可能です。

    おおっ、こんな方法が。
    一時期、「EditorConfigがグローバル設定っぽく使えたらなぁ」と思っていたのですが、この方法は良いかもしれません。

     |  yuko  |  返信
  7. > 一時期、「EditorConfigがグローバル設定っぽく使えたらなぁ」と思っていたのですが、この方法は良いかもしれません。

    なるほど、そういうことでしたら、他にも以下のようなマクロ プロパティがあり、それぞれ EditorConfig の設定に対応しています。

    document.IndentSize = 2; // indent_size
    document.IndentStyle = meIndentStyleTab; // indent_style
    document.MaxLineLength = 80; // max_line_length
    

    ちなみに、これらはすべて文書ごとの一時的な設定なので、文書を閉じるとリセットされます。

    マクロの [編集モードが変更された時] あたりのイベントで設定しておけば、編集モードごとに切り替わる、ちょっとした「なんちゃって EditorConfig」みたいな使い方もできそうですね👍

     |  Kuro  |  返信
スポンサーリンク