テキストエディタ「Mery」ベータ版 Ver 2.6.9 を公開、自動保存機能、バックアップ機能を搭載

テキストエディタ「Mery」ベータ版 Ver 2.6.9 を公開、自動保存機能、バックアップ機能を搭載

簡単・便利!シンプルなテキストエディタ「Mery」の最新版が遂に完成。

本バージョンでは、自動保存機能、バックアップ機能、変更行の強調表示機能など、以前からご要望の多かった機能を搭載しました。一緒に仕様を考えてくれたみなさん、ご意見を投稿してくれたみなさん、ご協力ありがとうございました!

今回の新機能は開発が大変すぎて、心が折れかけました。

本当はサクッと開発してキリッと公開したかったのですが、「もうやだー」と弱音を吐いたり「もうむりー」と諦めかけたりしているうちに前のバージョンの公開から 1 か月以上も時間が経っていました。

特に、変更行の強調表示機能の実装は難題で、メモリを節約しつつ動作速度への影響を最小限に抑えるために何度も最適化を繰り返し、夢の中にまでソースコードが出てきてうなされた夜もありました。

これ以上やったら Delphi 嫌いになるよ?

Kindle、電子書籍リーダー、Wi-Fi、ブラック、キャンペーン情報つきモデル

Kindle、電子書籍リーダー、Wi-Fi、ブラック、キャンペーン情報つきモデル
Amazon
7月17日まで、人気の Kindle エントリーモデルが 2,000 円オフでお買い得に!

参考 → Kindle (New モデル) を買ったのでレビューと自炊します! - Haijin Boys Online
スポンサーリンク

新機能

今回の新機能である、自動保存機能とバックアップ機能は、フォーラムを使ってアンケートのような形でみなさんのご意見を参考に開発させていただきました。参加してくださったみなさん、ありがとうございました。

それと、変更行の強調表示機能ですが、これは以前から多くのご要望をいただいておりました。

テキストエディタコンポーネントの大幅な改修が必要になることと、私の技術力がその領域に達していないことから「将来的に対応できれば…」とお茶を濁していましたが、そろそろ逃げ切れなくなってきたので実装に至りました。

→ 今なら 4 か月 99 円で音楽聴き放題!Amazon Music Unlimited の登録はこちら。

自動保存機能

編集中のファイルを一定の間隔で保存する自動保存機能は、予定外の PC の再起動や突然の停電などでデータが消えてしまうのを防ぎます。

自動保存機能 1

自動保存の有効・無効は [ファイル] メニューの [自動保存] からいつでも簡単に切り替えることができます。

[自動保存] を有効にすると、初期状態では 10 分ごとに上書き保存が実行されるようになります。

自動保存機能 2

[ツール] メニューの [オプション] を開いて、[自動保存] タブから設定を変更できます。

自動保存機能の有効・無効や、自動保存の間隔、自動保存先のフォルダの変更などはここから行います。

オプションで設定できる項目はシンプルですが、組み合わせによって様々な自動保存の方式に対応できるようになっています。

  • 自動保存する
    自動保存機能の有効・無効を切り替えます。[ファイル] メニューの [自動保存] と連動しており、どちらからでも切り替えることができます。
  • 分ごと
    テキストに変更が発生すると、ここで指定した [分] 後に保存が実行されます。0 を指定した場合は変更とほぼ同時に保存が実行されます。
  • 自動保存フォルダに保存する
    通常、自動保存は自動的に [上書き保存] を実行しますが、この項目にチェックを入れると [上書き保存] ではなく、指定した [自動保存フォルダ] にファイルを保存します。元のファイルに上書きしたくない、変更マーク (*) を解除されたくない、新規のテキスト (無題) も自動保存したい、などの場合に設定します。
  • 同名のファイルが存在する場合はファイル名を変更する
    [自動保存フォルダに保存する] と合わせて設定します。この項目を有効にすると、自動保存フォルダに同名のファイルが存在する場合に別名で保存します。
  • 自動保存フォルダ
    [自動保存フォルダに保存する] と合わせて設定します。指定したフォルダに自動保存のファイルが作成されますので、アクセス権のあるフォルダを入力してください。また、自動保存されたファイルは、Mery 終了後も自動では削除されません。

ポイント Mery.ini の [AutoSave] セクションの AutoSaveDelay にミリ秒単位で数値を設定すると、[分ごと] に 0 を指定したときの遅延時間を微調整できます。

自動保存機能は、自動回復機能ではありません。データの回復は、設定された自動保存フォルダから手動で行っていただく必要があります。
自動保存機能は、データの安全を保証するものではありません。ファイルの破損やデータの消失に備えてご自身でもデータのバックアップを行うことをお勧めします。

バックアップ機能

先ほどご紹介した自動保存機能は定期的に保存してくれる機能でしたが、これは意図しないタイミングでの保存ですので、「あの日、あの時のデータに戻したい!」なんていう用途には向いていません。

バックアップ機能はファイルを上書き保存する際に自動的に 1 つ前の状態のファイルをバックアップとして別名で保存します。

つまり、常に最新と 1 つ前の状態のファイルが保存されているので、誤って上書き保存してしまったときでも 1 つ前の状態に復元できるわけです。

バックアップ機能 1

バックアップ機能の設定も自動保存機能と同様、[ツール] メニューの [オプション] を開いて、[自動保存] タブから行います。

バックアップファイルの作成先などの設定を行うことでバックアップ機能が有効になります。

オプションで設定できる項目は下記のとおりです。

  • バックアップフォルダに保存する
    バックアップファイルを指定したフォルダに保存します。
  • 保存するファイルと同じフォルダに保存する
    バックアップファイルを編集中のファイルと同じフォルダに接頭辞 "Backup-" を付けて保存します。[バックアップフォルダに保存する] と同時に設定することもできます。
  • 同名のファイルが存在する場合はファイル名を変更する
    [バックアップフォルダに保存する] と合わせて設定します。この項目を有効にすると、バックアップフォルダに同名のファイルが存在する場合に別名で保存します。
  • バックアップフォルダ
    [バックアップフォルダに保存する] と合わせて設定します。指定したフォルダにバックアップファイルが作成されますので、アクセス権のあるフォルダを入力してください。

[バックアップフォルダに保存する] または [保存するファイルと同じフォルダに保存する] のいずれかを有効にすることでバックアップ機能が有効になります。

自動保存機能と同時にバックアップ機能を使用することも可能です。その場合、自動保存フォルダとバックアップフォルダは別々のフォルダを指定することをお勧めします。

[同名のファイルが存在する場合はファイル名を変更する] を有効にすることで、いわゆる「バージョン履歴」のように使うこともできます。

ポイント Mery.ini の [Backup] セクションの BackupMaxCount に 0 より大きい値を指定することで作成されるファイル数に上限を設け、サイクルバックアップのように古い世代のバックアップを自動で削除できます。

変更行の強調表示

変更行の強調表示 1

変更した行の行番号を太字にしたり、行番号の左端に保存前、保存後の目印を表示できるようになりました。

もちろん目印のオン・オフ切り替えは簡単です。

煩わしいと思ったらオフ、ちょっと気になったらオン、なんていう使い方も可能です。

変更行の強調表示 2

変更行の "目印" は、[表示] メニューから [記号] の中の [変更行を強調表示] にチェックを入れると表示されます。(初期値はオフ)

変更行の "行番号" を太字にしたり背景色を設定したりすることもできますが、こちらは [変更行を強調表示] とは連動しません。

これらの設定は [ツール] メニューから [オプション] を開いて [表示] タブの [表示項目] で個別に変更できます。

変更行の強調表示 3

[表示項目] の中で [行番号 (変更行)]、[変更行 (保存前)]、[変更行 (保存後)] の 3 つが今回追加された項目です。

例えば、変更行の行番号を太字にする場合は [行番号 (変更行)] を選択して [太字] をオンに。もっと目立たせたい場合は [背景色] を設定することもできます。

変更行の強調表示 4

変更行の目印は [変更行 (保存前)]、[変更行 (保存後)] で設定します。

例えば、保存後の目印が不要な場合は [変更行 (保存後)] で [背景色] を "透明" にします。

これらの目印は [ブックマーク] や [行番号 (変更行)] の上に描画されますので、テーマをカスタマイズするときはご注意ください。

変更行の強調表示機能の追加にともない、101 個のテーマファイルも更新しておきましたので、必要に応じてお使いのテーマファイルを差し替えてください。

更新 → 好みのカラーがきっと見つかる!テキストエディタ「Mery」の美しいテーマ 101 個 - Haijin Boys Online

コマンドラインオプション "/ff" (ファイルから検索, grep) を追加

コマンドラインから呼び出すときに "/ff" オプション (Find in Files) を指定することで [ファイルから検索] 機能を直接実行できるようになりました。

ファイルから検索

Mery.exe /ff "FindWhat" /fm /fr /fx /fw /fn /cp "FindPath"

[ファイルから検索] は以下のオプションを組み合わせることができます。

  • /fm 大文字と小文字を区別する
  • /fr サブフォルダも検索する
  • /fx 正規表現を使用する
  • /fw 単語のみ検索する
  • /fn ファイル名のみ表示する
  • /cp エンコード

"FindWhat" は検索する文字列、"FindPath" は "C:\Temp\*.txt" のように記述することで "C:\Temp\" が検索するフォルダ、"*.txt" がファイルの種類として認識されます。

ファイルから置換

Mery.exe /ff "FindWhat" /fm /fr /fx /fw /fn /cp "FindPath" /rw "ReplaceWith" /bk

[ファイルから置換] は以下のオプションが使用可能です。

  • /fm 大文字と小文字を区別する
  • /fr サブフォルダも検索する
  • /fx 正規表現を使用する
  • /fw 単語のみ検索する
  • /fn ファイル名のみ表示する
  • /cp エンコード
  • /rw ファイルから置換する
  • /bk バックアップを保存する

"FindWhat" は検索する文字列、"FindPath" は "C:\Temp\*.txt" のように記述することで "C:\Temp\" が検索するフォルダ、"*.txt" がファイルの種類として認識されます。"ReplaceWith" は置換後の文字列を記述します。

コマンドラインから [ファイルから置換] を実行する場合、確認のダイアログは表示されません。事前にバックアップを取ったり、"/bk" オプションが指定されていることを確認するなどして、データの紛失にはくれぐれもご注意ください。

更新内容

新機能以外にも、多くの改善や不具合の修正が含まれています。お使いのバージョンで問題が発生している場合は新しいバージョンに更新することで改善されることもあります。

C#、JavaScript、HSP の強調文字列、単語補完辞書を更新

編集モードの C#、JavaScript、HSP における強調文字列と、単語補完辞書を更新しました。C# はコンテキストキーワードの追加、JavaScript は差し替え、HSP は 3.51 プロ生ちゃんエディションに更新しました。

フォーラム デフォルトの構文定義の拡充について

[EOF] (ファイルの終端) を「←」表記に変更

ファイルの終端記号 [EOF] が少々時代遅れな感じがしたので「←」記号に変更しました。従来の [EOF] 表記が良い場合は [表示] メニューの [記号] から [CR と LF を区別して表示] にチェックを入れることで [EOF] 表記になります。

マクロバーに [編集] の項目を追加

登録しているマクロを 1 クリックで起動できるマクロバーですが、マクロのボタン上で右クリックから [編集] を呼び出せるようになりました。

マーカーバーに [単語のみ] [大文字小文字を区別] [正規表現] の項目を追加

登録しているマーカーを便利に使えるマーカーバーですが、マーカーのボタン上で右クリックから [単語のみ] [大文字小文字を区別] [正規表現] の設定を変更できるようになりました。

外部ツールの [アウトプットバーを使用する] で入力が [選択テキスト] [文書] [カスタム] の場合、標準入力を自動で閉じるようにした

外部ツールでコマンドラインツールを使用するときに、[選択テキスト] [文書] [カスタム] を標準入力に自動的に入力することができるのですが、入力後に標準入力をクローズしないと動作しないアプリケーションがあったので対応しました。

アウトプットバーにおけるリダイレクト処理の安定性を向上

外部ツールの [アウトプットバーを使用する] で環境によっては標準出力が拾いきれないことがあったので安定性を向上しました。

読み直しの際に、できるだけスクロールバーの位置を保持するようにした

[読み直し] や、編集中のファイルが他のエディタで変更されたときの読み直しで、スクロールバーの位置を "できるだけ" 保持するようにしました。

"できるだけ" というのは、編集中のファイルが他のエディタで変更されたときの読み直しでは、内容が変更されているためスクロールバーの位置を復元してもキャレット位置が編集エリア外に行ってしまうことがあるため、その場合はキャレット位置に追従するというわけです。

フォーラム ファイル再読み込み時にスクロール位置を復元する

[編集] カテゴリに [最後に編集した位置へ移動] を追加

せっかく変更行の強調表示が搭載されたのだから、それを利用した機能が 1 つでもあったほうがいいのではないかというコメントをいただきましたので実装してみました。

デフォルトでは Ctrl+Shift+Zに割り当てられていますが、これ、予想以上に使えそうな機能です。

Python のマクロで window の confirm と prompt が動作しなかった問題を修正

以前に掲載した "知っておくと便利なテキストエディタ「Mery」の 10 個の小技" という記事で、マクロは Python でも書けます!(キリッ) とか書いておきながら、Python だと 2 つのメソッドがプログラムミスで動作しませんでしたので修正しました。

フォーラム PythonScript で Prompt 他が呼び出せない

エディタの右端におけるサロゲートペアの描画を修正

サロゲートペアや IVS が画面の右端に描画されるときに、フォントのサイズやウィンドウ幅によって稀に描画されなくなることがあった問題を修正しました。

フォーラム 【要望2件】更新行のマーク表示・UNICODEサロゲートペアのエディタ右端の表示

縦書きで行間が 0 のときに傍線が切れていたのを修正

縦書きで行間を 0 に設定していてフォントサイズが小さい場合に、傍線の部分が再描画されず残骸が残ることがあったので傍線の位置を微調整しました。

コマンドラインオプションの処理を CommandLineToArgvW を使って作り直した

コマンドラインオプション "/ff" の機能追加に伴う仕様変更です。

従来は Delphi の ParamStr メソッドを使用していましたが、コマンドラインオプションで "" (空文字) を取得できず、/rw "" のような空文字への置換が実行できなかったため、仕様を全面的に見直しました。

この仕様変更にともない、今度は CommandLineToArgvW API の仕様上の制限が発生します。

具体的には、CommandLineToArgvW は二重引用符で区切られた引数の場合、引数の最後の文字が ¥ (円マーク) だと正常に動作しません。というか、¥ が次の文字をエスケープしていると認識される仕様のようです。

エクスプローラーからフォルダをドロップした場合は最後に ¥ はつきませんので、普通に使っていると引数が "フォルダ名¥" となるケースはそれほどないと思いますが、コマンドラインから Mery.exe を直接機能を呼び出すときに何らかの理由でフォルダ名を渡す必要がある場合はご注意ください。

ダウンロード

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

おわりに

自動保存機能や、バックアップ機能は今の時代、フロッピーディスクの場合などを考えなくて良いので割と簡単に実装できました。仕様決めのほうに時間がかかりましたが…。

自動保存の遅延時間や、バックアップの世代数をオプション画面上に設けなかったのは設定をシンプルにしたかったのと、そこまでこだわる人なら INI ファイルでも気にしないだろうと思ったのと、オプション画面に余白がなかったからです。

え、オプション画面に余白あるって?そこはワークスペース機能の建設予定地です。ワークスペース機能というのは前回の状態を保存・復元するための機能で、レジューム機能と呼ばれたりもします。

自動保存関連のフォーラムでご要望があり、変更行の強調表示機能を実装しなければワークスペース機能を実装していたのですが、変更行の強調表示機能はどうしてもアンドゥ処理の仕様変更が必要で、その仕様次第でワークスペース機能のプログラムが変わってくるため、本バージョンでは実装を見送りました。

あと、バグのご報告やご意見・ご要望は優しくささやいていただけるとモチベーションが上がります。

最後に、7月16日 12:00 ~ 7月17日 23:59 まで Amazon プライムデー が開催されます!プライム会員の方はお買い物を、まだプライム会員になっていない方はプライム会員に登録を!……以下のバナーからしていただけると開発の励みになります。

スポンサーリンク

関連する記事

フォローする

スポンサーリンク

コメント (9)

  1. >コマンドラインオプションの処理を CommandLineToArgvW を使って作り直した
    おつかれさまです。
    おかげさまで、コマンドラインオプション /ff にオプションが追加され、
    とても便利になりました。さっそくファイラに登録しました。

    変更行の強調表示、[変更行 (保存後)] が設定できて、気が利いてますね。
    こまめに保存したい、けど、変更行は判るようにしたい派なので、助かります。

    >その他、ちょっとした隠し機能を追加。(Mery.txt 更新履歴)
    は、Mery.ini の [Backup] BackupMaxCount、 [AutoSave] AutoSaveDelay
    以外にございますか?(少し期待 (^^;  )

     |  通りすがり^2
  2. >簡単・便利!シンプルなテキストエディタ「Mery」の最新版が遂に完成。
    内容が豊富で、驚きました。

    >[同名のファイルが存在する場合はファイル名を変更する] を有効にすることで、いわゆる「バージョン履歴」のように使うこともできます。
    大変うれしいです。
    「マーカー機能」とこの「バージョン履歴」機能のおかげで、スクリプトがとても書きやすくなりました。

    >自動保存機能と同時にバックアップ機能を使用することも可能です。その場合、自動保存フォルダとバックアップフォルダは別々のフォルダを指定することをお勧めします。
    AutoSaveのフォルダとBackupのフォルダに分けてみました。
    テキストエディターで「自動保存機能」というのは、今まで一度も利用した事が無かったのですが、今回設定してみました。

    >[編集] カテゴリに [最後に編集した位置へ移動] を追加
    >これ、予想以上に使えそうな機能です。
    便利そうな機能なので、Ctrl + Shift + Z を覚えます。

    バージョンアップ、ありがとうございました。

     |  いっち
  3. 新バージョンの制作、お疲れ様でした。そして、ありがとうございます。
    テーマも101個全て更新されたのですね。お疲れ様でした。

    また、ちょっと前のコメントだったのに、
    今回のバージョンに [最後に編集した位置へ移動]機能を取り入れていただき、ありがとうございます。

    前バージョンのコメント欄で、CTRL + SHIFT + ↓ (または ↑) を教えていただきましたが、
    主としてツールバーのボタンを使うので、これをボタンにすることは可能でしょうか?
    マクロについてほとんど分かりませんが、マクロの記録では選択していた文字がそのまま記録されてしまったもので。

    >> 皆様
    参照のためにファイルをバックアップ用のフォルダから開いたときに、
    次回以降にそのファイルを読み込み履歴から間違って開かないようにしたいのですが、
    何か良いアイデアがあれば、ご教示ください。
    履歴を全削除してしまえば良いのですが、残しておきたい履歴もあるもので。

    Kuroさんからは前バージョンのコメント欄で、現状、履歴の個別削除の実装は難しい旨の回答をいただきました。
    > 1.ファイルの読み込み履歴について、ファイル単位での履歴の削除
    > そうですね、[ファイル] メニューの中のファイルの履歴の部分を右クリックして、ポップアップメニューから [削除] や [固定] ができれば便利だと思います。
    > これは以前に開発に挑戦してみたことがありますが、開発環境 (Delphi) の機能ではメニューからさらにポップアップメニューを呼び出すことができず、情報も全然みつからなくて私の技術力では無理でした。こうやったらできるよ!っていう情報があればいただけると助かります。

     |  774
  4. いままで[最後に編集した位置へ移動]は undo → redo で擬似的に動作させたのが標準機能キター!
    と思ったがショートカットキーが redo と重複してますよ。[help]→キーボードマップで存在は確認できますけど、[編集]メニューに表示されません。
    #ME_ID_hogehogeの定数はいくつだろ

     |  通りすがり
  5. ごめんなさいキーの重複は「おま環」でした。メニューに出ないのはほんと。

     |  通りすがり
  6. 通りすがりさん、こんにちわ。(似てるけど別者です (^^; )横からごめんなさい。

    >[編集]メニューに表示されません
    そうですね。
    ただ「メニューには追加しないよ、キーアサインとポップアップは自分で好きにしてね」
    と解釈されるのがよろしいかと‥ (^^;
    ツール→ポップアップメニューの設定に追加と、
    (他のエディタたちと同設定に)キーアサイン変更して使ってます、便利ですね。

    ご存知かもしれませんが、ポップアップメニューの名称に 
    (&L)
    とか & 好みの文字を追加すると、ポップアップメニューのアクセラレータキーになります。
    まだされてなければ、お試しください。

     |  通りすがり^2
  7. Mery の更新と記事の作成お疲れ様です!

    自動保存や自動バックアップは個人的にも望んでいましたが、アンケートへの投稿文を考えているうちにタイミングを逸してしまい「まぁ、同様の要望を他の人が書いてくれてるしぃ~」と作者のモチベーションに寄与しないダメ行動に走ってしまいました。

    [変更行の強調表示]と[最後に編集した位置へ移動]も便利な機能で嬉しい限りです。
    紹介記事の新機能解説も大変分かりやすく、毎回感心させられます。

    ワークスペース機能も楽しみにしてます。これからも応援し続けます!

     |  アイスクライマー
  8. 開発お疲れ様です。

    編集済みファイルから変更行の行番号の背景色が設定できるようになり、より見やすく
    便利になりました。有り難うございます。さて、

    要望者さんの書き込みから [EOF] の代わりに ← が表示されるようになりましたが、
    この矢印の消し方が判りません。表示/非表示のオプションがあった方が自然に
    思います。普段から [EOF] 非表示にして使っているので、何か気になります。

     |  tisi
  9. 開発お疲れ様です。
    [最後に編集した位置へ移動]、地味に使えそうですね。他のエディタにもあるんですね。勉強になりました。覚えておこう。
    レジューム機能、よさそうですねぇ。ただ、開発が大変ならそこまでじゃなくても、自動回復でもいいんですけど。自動保存より自動回復してほしいです。というのも、とりあえずOSシャットダウンしないといけないけど、無題のまま書きかけのメモが、Merryを閉じるときにいちいち名前を付けて保存しないといけないのが、結構面倒なんですよね。WindowsUpdateで勝手に消されちゃうのもあるし…。自動保存をMerry終了時にもやってもらえると助かります。&起動時にも無題だけでも起動するとか、起動履歴からChromeみたいにCtrl+Shift+Tで閉じたのを起動でもとても助かる気がします。
    また、ベータ版Upお待ちしてます。:)

     |  kapi

コメントを残す