テキストエディタ「Mery」ベータ版 Ver 2.6.10 を公開、インクリメンタルサーチ機能を搭載

テキストエディタ「Mery」ベータ版 Ver 2.6.10 を公開、インクリメンタルサーチを搭載

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

本バージョンでは、ご報告いただいた不具合の修正およびいくつかのご要望の対応、さらに新機能としてインクリメンタルサーチを実装しました。

前のバージョンのリリース直後にちょっとしたプログラムミスが見つかっていたので、近いうちに修正版をリリースしようと思っていたのですが、それだけの修正でバージョンを上げるのも気が引けたので、他にも色々と改善してみました。

ところで先日、Mery の開発環境でもある Delphi のフル機能が使える Delphi Community Edition が無料化されました。

Windows の 32 ビットアプリケーションの開発のみに制限された Starter Edition はすでに無料化されていましたが、Community Edition では Professional Edition に相当する機能が使えます。しかも 64 ビットアプリケーション、Mac、Android、iOS 向けのアプリケーションまで開発できてしまいます。

まさか 10 数万円で購入した開発環境 (Android、iOS 開発はさらに別途数万円) が無料になる日が来るとは思っていませんでしたので、嬉しさよりもちょっと悲しい気持ちが大きかったですが、ユーザ登録をしてライセンスをいただき、早速インストールしてみました。

Mery の開発環境 (Delphi XE) より断然良いです。

Delphi Community Edition を使えば Mery のプラグインも (もちろん 64 ビット版も) 作れますし、既存のプラグインをカスタマイズすることも可能です。当然のことながら、テキストエディタを開発することもできてしまいます。

簡単に高機能なアプリケーションを開発できる Delphi、みなさんもこの機会に触れてみてはいかがでしょうか?そして、ワタモテ 13 巻を購入してみてはいかがでしょうか?

私がモテないのはどう考えてもお前らが悪い! 13巻 (デジタル版ガンガンコミックスONLINE)

私がモテないのはどう考えてもお前らが悪い! 13巻 (デジタル版ガンガンコミックスONLINE)
スクウェア・エニックス
もこっちとゆかいな仲間たち、遠足に行く。これ最高!

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

新機能

冒頭で述べた通り今回は不具合の修正が目的だったのですが、それだけだとあまり興味を引かないかなと思いまして、新機能の [インクリメンタルサーチ] をオマケで実装しておきました。

[インクリメンタルサーチ] 機能を実装しておけば、将来的に「検索バー」のような機能が必要になったときに開発がスムーズに行える寸法です。

フォーラム インクリメンタルサーチと、保存後に編集した行の行番号背景の変化

インクリメンタルサーチ機能

検索する文字列を 1 文字入力するたびに自動で検索を実行してくれる [インクリメンタルサーチ] 機能を使えば、文字を最後まで入力することなく目的の場所に移動できるので、入力の手間や入力ミスを減らすことができます。

インクリメンタルサーチ機能

使い方は簡単で、[検索] や [置換] のダイアログに [インクリメンタルサーチ] の項目が追加されていますので、そこにチェックを入れるだけ。あとは [検索する文字列] に文字を入力するとすぐに検索が実行され、カーソルが目的の位置に移動します。

更新内容

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

「←」記号が [EOF] を非表示にしても表示されていたのを修正

前のバージョンのリリース直後にご報告いただいた不具合です。[EOF] 表記を「←」記号に仕様変更したものの、その記号を非表示にするための機能がプログラムミスで動作しなくなっていました。

修正作業は 30 秒ぐらいで終わったのですが、さすがに「ミスっちゃってた、てへぺろ」って言いながら Ver 2.6.9 をこっそり差し替えたりすると怒られちゃうのでやめておきました。

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

[外部ツール] で [アウトプットバーを使用する] にチェックを入れると、コマンドラインツールの標準出力をアウトプットバーに表示できるのですが、この機能の安定性をもっと向上させました。

大変な検証作業にご協力くださったみなさん、ありがとうございました。

ご報告いただいた時点では、環境にもよりますが 10 万行ぐらいの標準出力を受けると「応答なし」になったり、データの取りこぼしが発生していました。

今回、研究に研究を重ね独自の解釈で作り上げた「イイ感じ出力」を採用したことで、200 万行以上 のデータで検証しまして、安定性の向上 (応答します) と高速化 (当社比 10 倍です) がされていることを確認しました。(500 万行まで確認)

ホントだよ。

[ファイル] メニューの履歴でステータスバーにフルパスを表示するようにした

コメント欄でご意見をいただきまして、結果、「なくても良い」という方向で話が進んでいましたが、あっても邪魔にならないと思ったので対応しました。

置換の進捗ダイアログを 1 秒おきに更新するようにした

気づいていた方もいらっしゃると思いますが、置換の進捗ダイアログで「~個、置換されました」という部分、1024 の倍数で更新していたんですよね。

これだと置換処理の速度によって更新されるタイミングがバラバラだったり、大きいファイルで置換の速度が遅いときには更新されにくかったりしていました。

置換の進捗ダイアログを 1 秒おきに更新するようにした

1 秒おきに更新するようにしたことで、置換された個数がわかりやすくなりました。

案外、これが一番良い変更点かもしれません。

プラグイン機能の変更点

プラグインから「すべてのテキスト」を取得する "Editor_GetText" メソッドを追加しました。ご要望があったわけではありませんが、文字数カウントや全文解析などに使えるかと思います。

また、以前にフォーラムでご要望がありました「プラグインからエンコードと改行コードを取得・設定する機能」ですが、"Editor_Info" メソッドにて対応しました。

  • MI_GET_ENCODE
    現在のエンコードを取得します。
  • MI_SET_ENCODE
    現在のエンコードを設定します。
  • MI_GET_LINE_ENDING
    現在の改行コードを取得します。
  • MI_SET_LINE_ENDING
    現在の改行コードを設定します。

フォーラム https://www.haijin-boys.com/discussions/3509

マクロ機能の変更点

上記のフォーラムでのやりとりに関連して、マクロのプロパティに "document.LineEnding" を追加しました。これによりマクロから改行コードを取得・設定できるようになりました。

ちょっとした実装漏れですが、マクロのメソッド "ChangeCase" で使える定数 "meCaseCapitalize" (単語の最初の文字を大文字に変換) を追加しました。

その他、細かい修正

例えば [検索] ダイアログの [上を検索] [下を検索] ボタンですが、[前を検索] [次を検索] に名称変更しました。これはメインメニューの項目名と統一したかったのと、縦書きの場合を考えての仕様変更です。

あとは、[検索] ダイアログには [置換 >>] ボタンがあるのに [置換] ダイアログには [<< 検索] ボタンがなかったので追加しました。え、[すべて置換] と間違えて押しちゃうって?

すぐに慣れるよ!

その他にも [検索する文字列] にフォーカスがあるときにEnterキーやショートカットキーで検索した後、[検索する文字列] を自動で全選択するようにしてみたり、[置換] ダイアログでもショートカットキーから [前を検索] できるようにしてみたり、と色々と細かい修正が入っています。

検索でヒットしなかったときにビープ音を鳴らすのをやめた (2018/07/25)

インクリメンタルサーチのときにポーンポーンとビープ音がうるさかったので、検索全般において、そもそもそういう音を鳴らすのをやめました。

置換ダイアログの [選択した範囲のみ] におけるインクリメンタルサーチを修正 (2018/07/25)

コメント欄でご意見をいただきまして、置換ダイアログの [選択した範囲のみ] がオンの場合、インクリメンタルサーチで選択範囲を解除せずに強調表示のみ更新するようにしてみました。

ダウンロード

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

おわりに

新しいバージョンの Mery いかがでしょうか。地味ですか?そうですか。でも、すっごく大変だったんですよ、[アウトプットバー] の作り直し作業。

コメント欄にて非常に詳細なデータを送ってくださった方々の熱意に影響され、開発用のデスクトップパソコンを 1 台、検証用のデスクトップパソコンを 2 台、検証用のノートパソコンを 2 台並べてストップウォッチを片手に検証作業を行いましたところ、室温が 35 度になりました。

正直申しますと、そこのプログラムは私が作ったものではなく Delphi コンポーネントを使っていただけなので、私の技術力では改善できないのではないかと思っていたのですが…。

結果は使ってみてのお楽しみ!

ちなみに Delphi コンポーネント (DosCommand.pas) は MPL のライセンスなのでカスタマイズした部分のソースは GitHub で公開していますが、Mery 用の魔改造なので通常の用途にはあんまり使えないと思います。

さぁ、夏です!

海ですか…?山ですか…?

私は家で冷たいビールを飲みながらホラー映画を観たいです。

Amazon プライム・ビデオでねっ!

おすすめ ホラー映画も見放題!Amazon プライムが 30 日利用できる、無料体験登録はこちら。

第1話 「鬼隠し編 其の壱 ハジマリ」

第1話 「鬼隠し編 其の壱 ハジマリ」
myシアターD.D.
昭和 58 年初夏。山奥の寒村、雛見沢村。連続怪死事件が…にぱー!

スポンサーリンク

関連する記事

フォローする

スポンサーリンク

コメント (47)

  1. 検索でヒットした行をまとめて一覧表示する機能なんかがあると助かります。
    該当箇所にいちいちジャンプするのではなく、まとめて見たい場合もありますので。
    その一覧から該当箇所に飛べる機能もあると助かります。

    インクリメンタルサーチ(複数行ヒット)の場合は特に見やすくなるのではないかと。

    イメージとしては、Winのエディタでは思い浮かばないのでMacで恐縮ですが
    「CotEditor 検索」で画像検索すると出てくるような感じです。

     |  名無しさん
  2. >> 名無しさん さん
    コメントありがとうございます。

    確かにそういった機能があれば便利ですね。今後の開発の参考にさせていただきたいと思います。

    現状ですと、MeryWiki に掲載してある「文書から検索」マクロをつかえばそれに近いことができると思います。検索結果から F10 キーでジャンプできますね。まぁ、インクリメンタルではありませんが ^^;

     |  Kuro
  3. すみません、ちょっとインクリメンタルサーチの時にビープ音が鳴るのがうるさいので差し替えますw

    →差し替え完了しました!

     |  Kuro
  4. 更新おつかれさまです。
    ありがたくつかわせていただきます。

     |  ひまお
  5. >アウトプットバーにおけるリダイレクト処理の安定性をもっと向上
    >ホントだよ。

    「KEN_ALL.CSV」にて、連続で10回以上テストしてみました。
    私のパソコンでも、「応答なし」になることが一度も無く、かつ、「取りこぼし」も全く発生しませんでした。
    動作が快適になったように感じました。

    -----------------------------

    仕事中、Meryを利用していてふと思いましたが、変更行(保存前)・変更行(保存後)の表示も、とても良いです。
    編集作業していて、「あれっ?ここ直したっけ?」とか、迷う心配ないですから。

    ありがとうございます。

     |  いっち
  6. >> ひまお さん
    コメントありがとうございます。
    今後とも応援よろしくお願いいたします。

    >> いっち さん
    その節は、いろいろと検証にご協力くださりありがとうございました。いっちさんのおかげで、アウトプットバーの性能を格段に向上させることができました ^^ そして、今回も検証ありがとうございます。

    本バージョンでは、KEN_ALL.CSV をコピーしまくって 500 万行ぐらいの KEN_ALL.CSV を作って検証しましたので、安心してお使いいただけると思います。

    > 変更行(保存前)・変更行(保存後)の表示も、とても良いです。
    ありがとうございます。「変更行 (保存前)」だけなら、多くのテキストエディタで当たり前のように搭載されている機能なので、ちょっとがんばって「変更行 (保存後)」まで作ってみましたが、好反応をいただけて嬉しいです!

     |  Kuro
  7. 更新お疲れさまです。
    前回の更新から間もなくのバージョンアップで驚きましたw

    しかもインクリメンタルサーチ実装とは素晴らしい…。
    早速利用してみて、モダンなエディタのニオイを感じましたw

    インクリメンタルサーチ、便利なので置換の際にも活用したいのですが、その挙動で要望を挙げさせてください。

    置換ポップアップで、「選択した範囲のみ」にチェック、かつ「インクリメンタルサーチ」にもチェックを入れている場合に検索文字列を変更すると、以下のような挙動になると思います。

    ・検索文字列に設定に応じて文字列をハイライト
    ・合致した最初の位置の文字列を範囲選択 (このタイミングで、元々選択していた範囲は解除される)

    これを、以下のようにできないでしょうか。

    ・検索文字列に設定に応じて文字列をハイライト
    ・元々の範囲選択箇所は変更しない

    理由としては、検索文字列を変更するたびにインクリメンタルサーチによって選択範囲が変わってしまうため、任意の範囲を置換直前に再選択する必要が出てくるためです。

    勝手な推測ですが、「選択した範囲のみ」にチェックしていると「次を検索」ボタンがグレーアウトして検索ができないようになっているのは、同じような理由からではないでしょうか?

    もしこの動作ができれば、置換される文字列・置換される範囲を同時に目視しながら検索文字列を作ることができるので、良いなぁ…と妄想しています。

     |  yuko
  8. ↑若干誤字りました...

    誤)・検索文字列に設定に応じて文字列をハイライト
    正)・検索文字列の設定に応じて文字列をハイライト

     |  yuko
  9. >> yuko さん
    コメントありがとうございます。
    気になったら修正せずにはいられないタイプなので、前回からちょっと早めのバージョンアップとなりましたw

    > ・検索文字列に設定に応じて文字列をハイライト
    > ・元々の範囲選択箇所は変更しない

    そういわれてみると、置換の場合にも選択範囲が毎回解除されてしまうのはいただけませんね。素敵なアイデアありがとうございます!早速実装してみたいと思います。

     |  Kuro
  10. ↑さっそく修正しておきました。
    バージョン番号は 2.6.10 のままですが、ご了承くださいませ。一身上の都合により Ver 2.6 系は 2.6.10 で打ち止めにしたいので ^^;

     |  Kuro
  11. おおお!こ…これは…!
    このインクリメンタルサーチ × 選択範囲のみ置換の組み合わせは、想像していた以上に快適で、感動しました!

    早速明日にでも同僚に自慢してきますw

     |  yuko
  12. 素晴らしいソフトをありがとうございます。
    64ビット版zipですが、3,558,908 バイトで合っていますか?
    私の環境では微妙に違う数字が出たもので。
    もちろんウイルスチェックには引っかかっていませんが。

     |  雪三
  13. Meryの最新版を早速ダウンロードさせて頂きました。
    Delphiは高額なイメージがあって手が出なかったのですが、無償化されたんですね。
    Pascalって初めて触るんですが、コーディングの可読性に配慮した構文っぽいですね。
    マルチプラットフォームだし、面白そうです。

     |  fuka
  14. と思って、Delphiについて軽く調べてみましたが、コンポーネントってWindowsAPIのラッパーだけだと思ったら、マルチプラットフォームにも対応したものが用意されているんですね。
    しかもフルネイティブと言うのは、結構興味深いです。
    (Javaみたいに、各プラットフォームごとに微妙にコーディングが違うのだと思っていました)
    UI/UXへの配慮もRADからの操作で対策できるようだし、今ちょっと困っていた地形データのレンダリングにも使えるかも知れません。
    実はDelphiって「ちょっと古い言語」と言うイメージがあったのですが、考え方を改めねばならないですね。

     |  fuka
  15. >> yuko さん
    ご返信ありがとうございます。

    > 想像していた以上に快適で、感動しました!
    私も感動しました ^^ これは便利ですね!アイデア素晴らしいです!

    >> 雪三 さん
    コメントありがとうございます。
    64 ビット版のファイルサイズですが、記事中のファイルサイズの部分を書き直すのを忘れていました。記事のほう、修正しておきました。

    >> fuka さん
    ダウンロードありがとうございます。
    Delphi の無料化は衝撃的でした。Pascal の構文はわかりやすいといわれていて、昔は情報処理の教科書なんかでも Pascal で書かれてたりしましたね。

    簡単なアプリケーションであれば、マルチプラットフォームのネイティブアプリが 1 つのソースでできちゃいますね。(Windows API や Cocoa API みたいな OS 特有の機能を使っちゃうとコードを分けないといけませんが)

    UI の開発においては Delphi はとても優れていて、簡単に高品質な外観のアプリケーションを作ることができますね。Delphi 5 や 6 (18 年前) は非常に人気があってその印象が結構強いので、ちょっと古い言語なイメージがありますね。でも現在でも続いている、非常に歴史のある開発環境ですよー ^^

     |  Kuro
  16. 開発、御疲れ様です。
    凄まじい勢いで使いやすくなっていきますね……。インクリメンタルサーチ、かなりよい感じです。

    いくつか気になることがございましたので、こちらにまとめて書かせて戴きたく存じます。

    ①要望
    サ○ラや○TBも同様の挙動なので、こちらが一般的なのかも知れませんが、行頭や行末で改行した際に、「二行更新」扱いになることに少々違和感があります。
    秀○やE○lipseの場合、行頭・行末、空行での改行は「一行追加した」と見なされます(EmEdit○rは行頭行末で挙動が異なっていました)。個人的にはこちらの方が自然であるように感じます。
    このあたりは人其々な気がしますが、一応、このような意見もあるということで、参考程度に考えてくださればと思います。

    ②要望
    既出の問合せでしたら申し訳ありません、「変換中の文字列を挿入モードで入力」についてですが、検索・置換の入力欄には適用できないのでしょうか?
    さしたる不便は無いのですが、普段「挿入モード」に慣れておりますので、こちらも同じ感覚で入力できればより便利に感じます。

    ③不具合?
    DirectWriteを有効にした際に、U+007F(DEL)やU+200B(幅無スペース)をいくつか続けて入力した後から通常の文字入力をすると、何だか愉快な字面になります。
    U+2060~4でも同様の事象が発生しますが、他方、U+2050~9はDW有効時のみ正しい図形(?)が表示されます。
    なお、U+00A0(NBSP)は問題ありませんでした。
    DW側の問題なのかも知れませんが、もし可能でしたら、解消して頂けますと幸いです。

    更新の止まったソフトも多い中、これ程に進化を続けるエディタは貴重な存在だと思います。今後の更新も楽しみにお待ちしております。

     |  迷
  17. >> 迷 さん
    コメントありがとうございます。
    ちょっと頻繁に更新しすぎてしまったので、しばらくお休みをいただこうと思います (w

    > ①要望
    そうなんですよね。これは仕様を決めるときに色々なエディタを調査しまして、秀〇さんのように 1 行扱いになるエディタがあることも知っていました。Mery はなるべく Windows の一般的な仕様に準拠しますので、Microsoft 製品である Visual Studio の動作を正としました。(私の愛用する Delphi も同様の仕様です)

    > ②要望
    [変換中の文字列を挿入モードで入力] は Windows の機能として用意されているものではなく、Mery のエディタエンジン専用に私が開発した仕組みなので、エディタエンジンを使用していない普通の入力欄などには残念ながら適用できません。

    > ③不具合?
    DirectWrite の仕様上、正常に描画できない文字はたくさんあります。これらはフォントによるものや、文字の組み合わせによるもの、ロケールによるものなど多種多様で、すべての文字を正しく描画することはほぼ不可能だと思います。描画がおかしい文字は見つけ次第、都度ひとつづつ手動で対応するしかないので、なんか変な描画になっていたら「あらあらウフフ」と思ってやってください ^^;

    DirectWrite の描画で問題があるようでしたら、DirectWrite をオフで使用していただくしか対策がない状態ですのでご了承くださいませ。(Windows 10 だと DirectWrite オフでも文字は結構きれいですよ)

    > 更新の止まったソフトも多い中、これ程に進化を続けるエディタは貴重な存在だと思います。今後の更新も楽しみにお待ちしております。
    ありがとうございます。今後とも応援よろしくお願いいたします。

     |  Kuro
  18. >> 迷 さん
    【追伸】DirectWrite の件は根本的な対策はありませんが、ご報告いただいた文字はその都度、一文字ずつ特別対応 (できる範囲ですが) はしていますので、今回の U+007F と U+200B と U+2060 ~ 4 は対応しておきますね。

     |  Kuro
  19. タイトル:2.6.10
    トップ絵:2.6.10.1
    ダウンロード:2.6.10
    プログラム:2.6.10

    2.6.10.1ってなに?

     |  亜鉛
  20. >> 亜鉛 さん
    7月25日にちょっと修正したので .1 をつけました。「更新内容」の最後の辺に追記してます。

    トップの絵はいつも記事を見てくれているユーザさんにわかりやすいように、公開初日のものとは色をかえて 2.6.10.1 としてみました。プログラムのバージョンは 2.6.10 で正しいです。

     |  Kuro
  21. Kuroさん

    わかったようなわからないような…。
    投稿前に 2.6.10.1 で検索したものの見つからず、更新内容の最後の辺というのもどれかわかりませんでした。
    つまりは 2.6.10 の公開後に、更にプラスアルファがあって 2.6.10.1 になったということでしょうか。

    いつも見に来ない人にもわかるようにしてもらいたいです。

     |  亜鉛
  22. >> 亜鉛 さん
    記事中の「更新内容」のところに 2018/07/25 の更新内容を追記しています。

    > つまりは 2.6.10 の公開後に、更にプラスアルファがあって 2.6.10.1 になったということでしょうか。
    はい、そういうことです。

    > いつも見に来ない人にもわかるようにしてもらいたいです。
    そういうかたは MeryWiki で公開している正式版をご利用いただければと思います。

    本ブログで公開しているのはベータ版で、コメント欄やフォーラムでみなさんとやり取りしながら、気分次第で適当に更新していくスタイルなのでご了承ください。(2.6.10.1 の公開に至った経緯もコメント欄を読んでいただければわかると思います)

     |  Kuro
  23. Kuroさん

    そこは読んだんですが、差し替えとか2.6.10.1という記述がないため判断ができませんでした。

    作者さまの開発されるもので、公開される場所ですし、そう言われてしまっては返す言葉はありません。
    不本意ではありますが、言われたとおりベータ版に手を出すのはやめておきます。
    申し訳ありませんでした。

     |  亜鉛
  24. なにやら殺伐とした雰囲気が…

    フリーウェアの公開自体が好意以外の何者でもない中で、ベータ版の更新履歴までこれだけ綺麗に楽しく記事にしてくださっている時点で、私としては感謝しかないです!

     |  yuko
  25. あまり重要ではありませんが気になる事象があったのでコメントしておきます。

    Mery(64bit)を2.6.7→2.6.10にバージョンアップしたのですが、
    ウィンドウサイズ、位置が記憶されなくなりました。
    (サイズ変更、場所移動をしても次回起動時には初期状態にもどる)

     |  いそ
  26. >> yuko さん
    そう言っていただけるとありがたいです!確かにフリーソフトということで勘弁してね的な考えはなくもないですが、正直、普段見ない人のための記事を書くより、いつも見てくれる人のための記事を書いたほうがベータ版のフィードバックもいただけますし、SEO 的にも効率が良いのでw

    でも、記事中にもありますが「ミスっちゃってた、てへぺろ」ってファイルを差し替えたときは、よくお叱りのコメントをいただきます。

    今回はわかりやすいように記事の更新日時も変更し、トップの絵も変更し、変更内容も追記して、変更した旨をツイッターで流しましたがダメでしたね ^^;

    >> いそ さん
    コメントありがとうございます。

    Ver 2.6.10 で確認してみましたが特に問題ないようです。ウィンドウサイズの記憶・復元に関しては 2.6.7 からプログラムを変更していませんので、お手数をおかけしますが設定のご確認をお願いできますでしょうか。

    [ツール] メニューの [オプション] から [基本] タブのなかの [ウィンドウの位置とサイズを復元] にチェックが入っているでしょうか?

    チェックが入っている場合、その右側にある「...」ボタンで [ウィンドウ位置とサイズ] のダイアログを表示しまして、その中の値がすべて「0」になっているかどうかご確認ください。(ここが 0 以外だと、ウィンドウ位置が固定されます)

     |  Kuro
  27. MeryのZIP版を使用しています(ポータブル&非常駐)。
    外部ツール設定でMery.exeから(? Mery.iniから?) の相対参照でコマンドやアイコンのパスを指定するばあい、うまくいくときといかないときがありますが、Meryを開いたときにMeryフォルダのパスが作業フォルダとしてとおっているかどうかで違ってくるみたいですね。
    外部ツールの登録・編集時に相対参照を使うばあい、つねにMeryフォルダからの相対参照になるとよいのですがいかがでしょうか?(%appdata%\Meryを使うインストーラ版との兼ね合いとかで問題あるのかなぁ…)

    以下、ZIP版で確認した「外部ツールの登録・編集時の挙動」を書いておきます。

    Meryフォルダを作業フォルダに指定したMery.exeのショートカットやランチャから起動したばあいは(空での起動でもファイルのドラッグ&ドロップでも)コマンドやアイコンを相対参照で指定できて、テキストファイルなどを直接ダブルクリックしてOSの関連付けでMeryを起動したばあいは相対参照ができないようです。

    ファイルのダブルクリックから起動したときは、最初に開いたファイルの親ディレクトリが外部ツールの登録・編集時の相対参照元のカレントフォルダになるようですが、登録済みの外部ツール実行時のコマンドやアイコンのパスはMeryフォルダからの相対参照のようですね。

    レジストリの [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Mery.exe] でMeryのパスをとおして "PATH"= でMeryフォルダを指定してみてもだめなようです(そもそもレジストリをいじるんじゃポータブルモードの意味が…)。

    Meryを空で起動して相対参照での登録ができていれば、それ以後はファイルのダブルクリックからMeryを起動したばあいでも相対参照で登録したコマンドのパスはきちんと適用されるようです。
    アイコンについてはインデックスが指定されないので、Mery側の規定のアイコンのままになりました。
    → 絶対参照(フルパス)で外部ツール登録したあとで、Mery.iniをいじって相対参照パスとアイコンインデックスに書きかえてもうまくいくようです。

     |  ぽい
  28. ご丁寧な返答、有難うございました。

    Eclipseの仕様って、ひょっとしたらIDEでは少数派かもしれないんですね。MSVSはプロ生ちゃんIDEを導入したら満足してしまい、あまり使ってませんでした……。

    検索・置換欄の件も承知致しました。
    可能だったらとっくに対応されているだろうとは思っておりましたが念のためお伺いした次第です。お手数お掛けしました。

    Directwriteの件はご修正いただけるとの事、有難うございます。
    特にU+200Bは某SQLソフトでNULLの表記に使われますので、修正いただけるのは有難いです。

     |  迷
  29. 中身が違うなら(更新されているなら)バージョン番号も更新してほしいなというのは素直な感想だと思います。
    そうでないとバージョンの意味がなくなってしまうので。

    バージョン番号がついている以上、それを参考に判断するのは当然だと思うし。
    付いてなければ日付なりサイズなりハッシュ値なりで判断するでしょうけど。

     |  名無しさん
  30. >> ぽい さん
    ご愛用ありがとうございます。
    外部ツールの設定の件、確認してきました。

    ちょっと把握できていない部分があるので確認させてください。

    まず、外部ツールの [コマンド] の部分で相対パスを指定した場合、Mery.exe からの相対パスとして実行されます。これは関連付けから開いたときでも関係なく Mery.exe からの相対パスから実行するように作ってます。

    で、ご指摘の内容は【登録・編集時】ということですが、これは [外部ツールの設定] → [プロパティ] の画面で入力するとき、ということだと思うのですが…

    [コマンド] の欄は特に入力チェックなどはないので、相対パスでも受け付けてくれるようなのですが、何か問題がありますでしょうか?

    それから、[アイコン] の部分ですが、これは確かに絶対パスしか受け付けてなくて、相対パスだとアイコンの選択欄に絵が出てこないので選べませんね ^^;

    つまり、[アイコン] の入力欄で相対パス (Mery.exe からの) で指定できたらイイってことですかね?(間違っていたらスミマセン…)

    >> 迷 さん
    ご返信ありがとうございます。
    eclipse は私も仕事で使うので Mery を作るときにもたまに参考にしてますね。特に eclipse 系の Aptana Studio には影響を受けてます。

    でも一応、Windows 用のテキストエディタってことで仕様は メモ帳 > Office 系 > Visual Studio 系、な優先度で参考にさせてもらってます。

    > 検索・置換欄の件も承知致しました。
    いいえー。トゥルーインライン入力はほんとに便利な機能なので、あらゆる場面で使いたくなりますからね。Chrome ブラウザとかだとすべての入力欄で対応されていてスゲー!って思います。OS の標準機能として MS が対応してくれたら良いんですけどね…。

    > 特にU+200Bは某SQLソフト
    そうだったのですね。ゼロ幅スペースってエディタによって実装が色々なのですが、文字通りゼロ幅にするのと、わかりやすいように半角スペース分空けるのとどっちがお好みでしょうか?(某 SQL ソフトって Object Browser?どんな表示になるのか気になります)

    >> 名無しさん さん
    コメントありがとうございます。
    そうですね、以後、気を付けようと思います。

     |  Kuro
  31. @kuroさん
    > [コマンド] の欄は特に入力チェックなどはないので、相対パスでも受け付けてくれるようなのですが、何か問題がありますでしょうか?
    > [アイコン] の入力欄で相対パス (Mery.exe からの) で指定できたらイイってことですかね?

    たしかに「コマンド」のほうは問題なく相対参照できているようですね。
    おなじEXEファイルへの相対参照パスを「アイコン」指定欄に入力しても反映されないので、「コマンド」の登録にも問題があるような認識になっていました。
    Meryの起動条件で「アイコン」指定欄で相対パスがとおらない状態でも「コマンド」に登録した相対パスの外部アプリは起動可能でした。
    おっしゃるとおり、どうやら「アイコン」の入力欄だけの問題のようです。

    個人的には相対参照でアイコンを登録できる条件も割り出せているのであまり差しつかえはないのですが、ご報告までにということでひとつ :)
    マクロで外部アプリを呼び出すスクリプトを書くよりも外部ツールに登録するほうがハードルが低いので、初心者?向けに混乱のない仕様のほうがよいのではないかということで、よろしくお願いします。

    あとインストーラ版を利用していないので理解があいまいなままでしたが、どちらの場合も相対参照元はMery.exeということみたいですね。
    できましたら、オンラインヘルプにも説明を追加していただければとおもいます。

     |  ぽい
  32. インクリメンタルサーチは英文とかだと便利なんだけど、日本語だといまいちなんだよなぁ。
    Migemoに対応する予定はあるでしょうか?

     |  foo
  33. 更新作業お疲れ様です。

    wiki の開発室に記載されている項目について、
    > ワークスペース保存・復元 ~ 検討 … 備考: [元に戻す] 情報も保持する必要ある?
    レジューム機能のようなもののことだと読んだ気がしますが、それで良いですか?

    > スクロールバーに検索色付け ~ 検討 … 備考: 基礎はできたけど動作速度が実用レベルに達しない
    スクロールバーに変更箇所の色付けをすることも同様に難しいのでしょうね?
    例えば、アウトラインでの色付けやマーク付けをすることも処理が重くなるだけかな?

    > ミニマップが欲しい ~ 検討 … 備考: 面白そうだけど大変そう
    > 集中執筆モード ~ 検討 … 備考: 私の要望
    これはどういう機能なのでしょうか?

    > 矩形選択をがんばる ~ 検討 … 備考: がんばれない
    > 矩形選択で文字入力したときにイイ感じに入力されると良い ~ 保留 … 備考: 作ってみたけど問題多すぎ 
    (これは単なる感想)矩形選択は今の機能で十分な気がしますが、要望はいろいろとあるんだなー。

     |  ARC
  34. > メモ帳 > Office 系 > Visual Studio 系、な優先度で参考にさせてもらってます。
    もはや「メモ帳よりも"ちょっと"いいもの」とは言えない程進化している気もしますが、やはりメモ帳が最高優先度なのですね……w。でも確かに設定画面などのシンプルさはメモ帳精神(?)を受け継いでいる気がします(メモ帳は設定画面自体ありませんが)。

    > OS の標準機能として MS が対応してくれたら良いんですけどね…。
    全くですね。極東の言語は後回しなのか……。

    > 文字通りゼロ幅にするのと、わかりやすいように半角スペース分空けるのと
    その二択ですと、個人的には半角ある方が好みです。ただ、慾を言うとDirectwrite無し状態のMeryのように、「半角ほどではない何か」が理想です。

    > どんな表示になるのか気になります
    某ソフトはA5:S○L Mk2ですね。出力結果をコピペすると、NULLは「U+200B + "(NULL)" + U+200B」になります。(文字列で「(NULL)」が入っている場合と区別するためだそうです)

     |  迷
  35. >> ぽい さん
    > どうやら「アイコン」の入力欄だけの問題のようです。
    了解いたしました。

    > どちらの場合も相対参照元はMery.exeということみたいですね。
    そのようですね。ただ、相対パスで指定できるように作ってあるのか、たまたま相対パスでも動いているだけなのか調査してみないとわかりません。外部ツールの部分を作ったのは数年前なので忘れちゃってますね…

    とりあえずアイコン入力欄は仕様を確認の上、対応できそうであれば修正してみます。

    > できましたら、オンラインヘルプにも説明を追加していただければとおもいます。
    できれば絶対パスをオススメします。

    相対パスでの指定は Windows の仕様上、カレントディレクトリの変更が伴いますので、詳しくない人が使うと不具合のもとになります。ヘルプには書かずに、知っている人は自己責任で使ってね的な感じになるかなと思います。

    >> foo さん
    コメントありがとうございます。

    > インクリメンタルサーチは英文とかだと便利なんだけど、日本語だといまいちなんだよなぁ。
    確かに日本語だと逆にうざったくなりますね。
    おー、Migemo って名前は聞いたことがありました。これは面白そうですね。
    Delphi のサンプルとかが落ちてたら挑戦してみてもイイですね。
    (軽くググってみたけどサンプルないのー)

    >> ARC さん
    コメントありがとうございます。

    > レジューム機能のようなもののことだと読んだ気がしますが、それで良いですか?
    その通りです。

    > スクロールバーに変更箇所の色付けをすることも同様に難しいのでしょうね?
    変更行の色付けは行単位なのでそれほど負荷はないと思います。

    色分け、マーカー、検索色付けは、画面上ではすべて色がついているように見えますが、実は、高速化のために画面に表示されている部分だけをリアルタイムで分析して色付けしているんです。

    スクロールバーにこれらを描画するとなると、文章全体を解析してマーカー、検索の色付けを処理してスクロールバーに色付けし、さらに一文字変更があるたびにすべての解析をやり直すことになるので非常に動作速度が遅くなってしまいます。

    > ミニマップが欲しい ~ 検討 … 備考: 面白そうだけど大変そう
    > 集中執筆モード ~ 検討 … 備考: 私の要望
    > これはどういう機能なのでしょうか?
    ミニマップは上記の「スクロールバーに色付け」の延長で、スクロールバーをもうちょっとでっかくして、変更行や検索、マーカーなどのいろんな情報を色で表示する機能です。

    集中執筆モードはフルスクリーンモードのもっとシンプルな画面のやつで、全画面表示にしてツールバーやタブなどを完全に非表示にして画面上に編集エリアのみ表示し、執筆に集中できるモードです。テキストエディタでは OMMWRITER や Mac の Stone などがイメージ的に近いです。(喫茶店でノート PC で執筆とかしてて、カッコイイ!ってなる感じのクールな画面の予定です)

    > (これは単なる感想)矩形選択は今の機能で十分な気がしますが、要望はいろいろとあるんだなー。
    そうなんですよね。Mery は矩形選択はあまり得意ではないので表に出していませんし、エディタコンポーネントの仕様上、対応がすごく難しい部分です。

    >> 迷 さん
    ご返信ありがとうございます。

    > やはりメモ帳が最高優先度なのですね……w。
    ですですw テキストエディタってどちらかというとプログラマーさんとかが使うイメージが強くて、どうしても機能や画面のクセが強くなってしまう傾向があります。

    最近はそういうのって Atom や VS Code 使えばいいじゃん!っていう傾向で、マニアックに多機能化しちゃったテキストエディタはけっこう死にかけてますから、Mery は逆の発想で初心者が感覚的に、簡単に、気軽に使えるメモ帳を目指してます。

    > その二択ですと、個人的には半角ある方が好みです。ただ、慾を言うとDirectwrite無し状態のMeryのように、「半角ほどではない何か」が理想です。
    なるほど。秀〇さん (DirectWrite) では半角スペース、E〇さん (DirectWrite) ではゼロ幅、メモ帳 (DirectWrite 無し) ではゼロ幅でしたが、もうちょっと検討してみますね。

    > 文字列で「(NULL)」が入っている場合と区別するためだそうです
    ふむふむ、フリーでこんな SQL ツールがあったのですね。しかも Delphi 製っぽいですね。これは良いものを教えてもらいました!^^

     |  Kuro
  36. >ふむふむ、フリーでこんな SQL ツールがあったのですね。
    けっこう有名かと (^^;

    以前から少し疑問だったのでお尋ねするのですが、SQL整形の SQLFMT.DLL ですが、
    複雑なクエリは整形しきれないことがありますよね。

    なので、コマンドラインから呼べる、
    A5M2cmd_2.11.0_beta3(同所のベータに以前あった整形部を切出したもの、今は無いようです)
    anbt-sql-formatter (sonota さんの java→ruby ポート)
    SQLConvert
    などを、マクロから呼出して整形してます。
    Kuro さま的には SQLFMT.DLL で事足りてらっしゃるのかな?

     |  通りすがり^2
  37. >> 通りすがり^2 さん
    そう言われてみると、昔、Mery に SQL 整形機能を搭載しようとした時に A5:S○L Mk2 の作者さんのサイトを見た気がします ^^;

    作者さんが使われている ActiveQueryBuilder っていうコンポーネントが SQL 整形機能やクエリビルダとか搭載されていてスゴイんですけど値段も結構するんですよね。

    > SQLFMT.DLL ですが、複雑なクエリは整形しきれないことがありますよね。
    そうですね。ストアドとかだとダメな時があった気がします。

    > Kuro さま的には SQLFMT.DLL で事足りてらっしゃるのかな?
    私はずっと SI Object Browser を使っていますが、当時、Object Browser に SQL 整形機能がなかったころ (Ver 9 以前かな) に、SQL 整形ツールが欲しくて Mery に搭載したのが sqlfmt.dll です。

    Object Browser に SQL 整形機能が搭載されてからはもう Mery の SQL 整形は使ってませんね。(家で趣味で MySQL とかいじるときはたまに使ってますがw)

    SQL 整形ライブラリって色々あるのですが、ライセンスが厳しいものばかりで自由に使える (といっても同梱はできませんが) のが sqlfmt.dll ぐらいなんです。Poor Man's T-SQL Formatter というライブラリが性能は良さそうなのですがライセンスが厳しくてね…。

     |  Kuro
  38. ご回答ありがとうございます。
    機能について理解しました。

     |  ARC
  39. なるほど、です。ライセンスは悩ましいところですね。

     |  通りすがり^2
  40. Meryさんの話題でなくて恐縮ですが、 A5:S○L Mk2 さんの Beta ページから、

    >2018/8/6
    >コマンドライン版
    >以前、ベータ版で公開していたコマンドラインでSQLの実行やインポート・エクスポートなどを行うツールを開発再開

    Delphi 使いさんが元気なのは嬉しいですね、ということでご容赦を (^^;

     |  通りすがり^2
  41. おくれはせながら、インクリメンタルサーチがとても便利で重宝させていただいております。
    いつもありがとうございます。

     |  ハジメ
  42. >> 通りすがり^2 さん
    全然オッケーです。
    A5:S○L Mk2 さん、すごい勢いで更新されてますねー。

    Delphi の盛り上がりに便乗して Mery も更新したいところですが、なかなかやる気が起きなくて…。一応、ちょろっと要望対応とバグフィックスをしていますが、公開するほどの内容でもないですし、記事を書く元気もナッシング。

    >> ハジメ さん
    コメントありがとうございます。
    インクリメンタルサーチ、使ってくれてありがとうございます。あまり目立たない機能ですし、日本語入力だとビミョーなので、そう言っていただけると少し気持ちが楽になります ^^

     |  Kuro
  43. いつもお世話になっております。
    趣味の物書きにMeryを使わせて頂いてます。縦書き便利です。軽くて字が見やすいので大変重宝しております。
    個人的な欲を言うと縦書き時の最大サイズ時に末行が真ん中あたりにもってこられると
    視線が真ん中に固定されるため前後が見やすくありがたいなあとおもいます。
    もし設定等で可能であったらスイマセン。

     |  あ
  44. >> あ さん
    ご愛用ありがとうございます。
    縦書き機能は開発に非常に時間がかかったところなので、使っていただけてうれしいです。

    > 縦書き時の最大サイズ時に末行が真ん中あたりにもってこられる
    最終行が画面の中央付近ということは、画面の左半分は余白ということになるのでしょうか…?ちょっと動作が想像できないので、よろしければそういった機能のあるエディタ (ワープロソフトでも可) があれば、教えていただけますと今後の開発の参考にしてみたいと思います。

    ご希望通りの機能ではないと思いますが、視線の移動を抑えたいということでしたら以下の 2 通りの方法が考えられます。

    (1) スクロールマージンを調整する
    スクロールマージンというのは縦書きの場合ですと、常に見えている左右の行数 (デフォルトでは 3 行) ですが、これをもう少し多く表示するようにすれば、視線は画面の左端を見なくて済みます。

    (2) キャレット位置の行を画面の中央にするマクロを使う
    ボタン一発でキャレット位置の行が画面の中央にスクロールするマクロを使えば、スクロールマージンより便利かもしれません。

    上記の 2 つの方法は、以下のフォーラムで具体的な方法を記載していますのでお試しくださいませ。
    https://www.haijin-boys.com/discussions/3295#discussion-3300

     |  Kuro
  45.  横入り済みません。

     多分、あさんのおっしゃっている事は、WORDでの半ページ送りの事ではないでしょうか?

     可能なソフトウェアは、有料の物でWORD、秀丸があり、

     一行を残し、全てのページを送れるのは一太郎、エムエディター(要設定)があります。

     無料の物でTATEditor、TeraPadがあります。これも一行を残して全てページを送れます。

     最後になりましたが、kuro様、Meryのような素晴らしいソフトウェアを公開して下さって、本当に感謝しております。

     |  和七郎
  46. >> 和七郎 さん
    情報ありがとうございます。

    Word、秀〇、TeraP〇d で確認してみたのですが「半ページ送り」という機能がどこにあるのかわかりませんでした ^^; (TeraP〇d で半ページスクロールというのがありましたがコレとは違いますよね…)

    「ページを送る」という動作は、キーボードの PageUp、PageDown のスクロールとは別のものを指しているのでしょうか?

    もし、スクロールのことでしたら Mery でも PageUp、PageDown で一行を残して次のページにスクロールしますが、これとは違いますか?スクロールでしたら、半画面スクロールもマクロにて対応することが可能です。(参考フォーラム: https://www.haijin-boys.com/discussions/3559)

    でも、あさんのおっしゃっている感じですと、最後の行が自動で常に画面の真ん中あたりにある機能、という意味合いが強いようなので、やはり Word や秀〇さんにはそういった機能があるのでしょうね。ググってみても「半ページ送り」なる機能がヒットしないので、お手数をおかけして恐縮ですが、その設定方法を教えていただけますと助かります。

     |  Kuro
  47. >Word、秀〇、TeraP〇d で確認してみたのですが「半ページ送り」という機能がどこにあ>るのかわかりませんでした ^^; (TeraP〇d で半ページスクロールというのがありました>がコレとは違いますよね…)

    興味があったので、調べてみました。秀〇の巻き
    その他⇒動作環境⇒表示/操作⇒PageUp/PageDownでスクロールする量
    ⇒1/2ページ
    ではないでしょうか? 普段縦書きは使わないのでスクロールマージンは
    余り気にしていません。

     |  tisi

コメントを残す