分割された文書の検索

  1. こんにちは。
    外部からコマンドライン形式で、自作マクロを通して
    上下分割された文書に対し、クリップボードの値で検索を実行した場合、
    上側で検索、移動が行われています。
    この時、下側で検索、または検索前に手動で上下を入れ替えておいたり
    できるでしょうか?
    で伝わりましたでしょうか?

     |  すなふきん  |  返信
  2. こんにちは。

    上下分割時、マクロの Find メソッドは現在フォーカスのあるエディター側で実行されます。

    コマンドラインから Mery.exe にファイル名を渡して起動した場合はメイン側 (上側) のエディターにフォーカスが移動するので、その直後にマクロが実行され、上側で Find メソッドが実行されているのだと思います。

    起動時マクロで下側で Find メソッドを実行するためには、標準コマンドの [次のペイン] が使えると思います。

    これは、メインエディター → サブエディター → その他のペイン (アウトラインペインなど) の順にフォーカスを移動する機能です。

    これを使って、

    editor.ExecuteCommandByID(2187); // [次のペイン] 呼び出し
    document.selection.Find("GetData", meFindNext);
    editor.ExecuteCommandByID(2189); // [アクティブなペイン] 呼び出し
    

    事前にサブエディター側にフォーカスを移動しておけば、下側で Find メソッドが実行されるのではないでしょうか。

    最後の "[アクティブなペイン] 呼び出し" は、画面が分割されていない状態かつ、アウトラインプラグインなどのペインが表示されていると、[次のペイン] でアウトラインペインにフォーカスが移動する場合があるので、[アクティブなペイン] を呼び出して、最後にアクティブだったエディターペインにフォーカスを戻しています。

    > で伝わりましたでしょうか?

    想像でがんばってみましたが、間違っていたらすみません。

     |  Kuro  |  返信
  3. ご回答ありがとうございます。

    検索ワードでペインを判断するようにできました。
    何でも対応できてしまいますね。すごい!
    ペイン数(分割されているか)は取得できないんですよね?

    ExecuteCommandByIDというのがあったんですね。
    他にも使えそうなもの、あるかな?

    > 想像でがんばってみましたが、間違っていたらすみません。

    完璧に伝わっていましたが、やっぱり「がんばり」が必要でしたか><
    入出力ともに日本語が怪しい年頃になりました。

     |  すなふきん  |  返信
  4. うまくいったようで良かったです。

    > 入出力ともに日本語が怪しい年頃になりました。

    そんなことないですよー。私はマクロが苦手なもので、問題となっている箇所のソースコードと Mery のバージョン番号ぐらいの情報は欲しかったところですがw

    > ExecuteCommandByIDというのがあったんですね。

    これは、コマンド ID を指定することで Mery のコマンドの "ほぼ" すべてを呼び出すことが出来る機能です。

    https://www.haijin-boys.com/wiki/マクロリファレンス:3:Editor_オブジェクト#ExecuteCommandByID_メソッド

    (マクロからの呼び出しになるので、すべてのコマンドがきちんと動作するという保証はありません)

    > ペイン数(分割されているか)は取得できないんですよね?

    分割されているかどうかは、QueryStatusByID を使えば、たぶん出来ると思います。

    Mery のバージョンが分からなかったもので。Ver 2.6.7 だとダメかもしれませんが Ver 3 系以降なら使えるはずです。

    if ((editor.QueryStatusByID(2186) & 2) != 0) {
    	alert("上下に分割されてるよ");
    }
    if ((editor.QueryStatusByID(2226) & 2) != 0) {
    	alert("左右に分割されてるよ");
    }
    

    こんな感じで、ExecuteCommandByID と同様、コマンド ID を指定して、そのコマンドのチェック状態がオンかオフかを取得することができます。

    2 というのはチェックのオン・オフを取得する場合です。これを 1 にすると有効・無効の状態を取得することもできます。

    Ver 3 系はウィンドウ分割の仕組みも大幅に改善されているので、お試しいただければ幸いです。

     |  Kuro  |  返信
  5. ご返信ありがとうございます。
    見そびれていました。すみません。
    さらに前回のご回答により想定以上に解決、満足してしまい、
    今回分の確認が遅れてしまいました。
    おかげさまで「分割されていなければ分割⇒ペイン選択して検索」と
    機能アップ?できました。

    バージョンは3.2.5でした。
    前投稿後にガイドラインに気づきました。
    いろいろ端折って、すみません。以後、気をつけます。
    いつもどうやって動いているのか思い出すのに
    時間がかかって、質問するまでが大変です。

     |  すなふきん  |  返信
  6. いえいえ、お気遣いなく。お暇なときや気が向いたときで全然かまいませんよー。

    うまく行ったようで良かったです!3.2.5 なら前回の回答の内容で大丈夫そうですね、安心しました。

    ガイドラインですね。昔はユーザーさんの使ってる OS と Mery のバージョンぐらいは覚えられていたのですが、歳のせいですね、すぐに忘れてしまうので…。あらかじめそういった情報をいただけると、解決までの時短になります。

    解決を急がない場合や、Mery に関係ない話題、まったり会話を楽しみたい場合などは Mery のバージョンとか書かなくて大丈夫です。

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