コマンドからのマクロ実行

  1. こんにちは。久しぶりにMeryを更新しました。
    以前に問い合わせたステータスバー上でのクリックについて、期待どおりの動作となりました。
    ご対応ありがとうございます。
    ところで、以下のようなマクロが動作しなくなりました。

    --- カレント行にClipboardの内容を書き込み(WriteString.js) ---
    var s = ClipboardData.GetData();
    document.Write(s);
    --- Clipboardの内容を検索(SearchString.js) ---
    var sel = document.selection;
    var s = ClipboardData.GetData();
    sel.Find(s, meFindNext + meFindAround + meFindReplaceRegExp);

    外部でClipboardを設定して、コマンドで次のように呼び出しています。
    Mery.exe test.txt /mf WriteString.js
    Mery.exe test.txt /mf SearchString.js

    Ver.2.4.8.6420から試してみましたが、Ver.2.5.4の変更に伴うもののようです。

    ついでに質問ですが現在の設定(オプション等)が失われたり、他の環境に設定を移したい時に
    必要になるファイルはどれでしょうか?
    Mery.ini?,編集モード設定のエクスポート、他にありますか?
    オプションの設定はどこに保存されているのでしょうか?

    以上です。よろしくお願いします。

     |  すなふきん  |  返信
  2. こんばんは、お久しぶりです。

    > Mery.exe test.txt /mf WriteString.js
    > Mery.exe test.txt /mf SearchString.js

    以前のバージョンでは「/mf」の動作に若干問題がありましたが 2.5.4 で改善されています。上記の記述で動作していたのは不具合によるもので、たまたま動いていました^^;

    正しい記述法は下記の順です。

    Mery.exe /mf WriteString.js test.txt
    ↑ このように Mery.exe /mf "マクロファイル名" "マクロをかけたいファイル名" の順番で指定してください。

    さらに、例えば、

    Mery.exe /mf WriteString.js test1.txt test2.txt test3.txt
    ↑ このように複数のファイルに 1 つのマクロを実行させることも可能ですし、

    Mery.exe /mf WriteString.js test1.txt /mf SearchString.js test2.txt
    ↑ このように異なるマクロを別々のファイルに実行させることも可能になりました。

    > ついでに質問ですが現在の設定(オプション等)が失われたり、他の環境に設定を移したい時に
    > 必要になるファイルはどれでしょうか?
    > Mery.ini?,編集モード設定のエクスポート、他にありますか?

    オプションの設定や編集モードの設定などもすべて Mery.ini に含まれておりますので、通常は Mery.ini だけを移行すれば大丈夫です。

    Mery.ini の場所は「ヘルプ → バージョン情報」を開いてバージョン情報ダイアログの Mery のアイコンの絵の部分をダブルクリックすれば Mery.ini の保存先が開きます。そのフォルダ内のファイルが設定ファイルのすべてです。

    Mery.ini = オプションとかその他諸々
    Mery.his = 最近開いたファイルのカーソル位置のデータ (不要なら無くても OK)
    Mery.dic = スペルチェックの辞書に登録した単語 (不要なら無くても OK)
    Mery.log = エラーログ (消しても OK)

    プラグインなどをご利用の場合は同じフォルダに Plugins フォルダがあり、そこにプラグインの設定ファイルが含まれていることもありますので、そちらも一緒に移行すれば大丈夫です。

     |  Kuro  |  返信
  3. こんにちは。
    最近追えてないので検索したところ、昔々の私のスレがあったので追加してみます。
    最新の状態ではないのですが...

    「Clipboardの内容を検索(SearchString.js)」(改)
    var sel = document.selection;
    var s = ClipboardData.GetData();
    sel.StartOfDocument(); // カーソルを文書の先頭に移動
    sel.Find(s, meFindNext + meFindAround + meFindReplaceRegExp);

    でソートされた状態のファイルを、例えば「UR_Ky」で(頭出し)検索したところ、
    https://i.imgur.com/XLnWF5P.jpg
    のように常に下から3行目に頭がきます。
    https://i.imgur.com/q51ttem.jpg
    のようにカーソルは頭の位置のまま、上方に表示されるようにする方法はありますか?
    ご不明な点がありましたら、お知らせください。よろしくお願いします。

     |  すなふきん  |  返信
  4. 横から失礼します。

    > https://i.imgur.com/q51ttem.jpg
    > のようにカーソルは頭の位置のまま、上方に表示されるようにする方法はありますか?
    sel.Find(); のあとに ScrollY = y; を表示行番号で指定するといいかもしれませんが、長大なファイルの場合うまくいかないことがあります。

    // スクロール調整(表示座標の行番号)
    ScrollY = sel.GetActivePointY( mePosView );
    
    // ダメなときは、強引に...(コマンドライン引数  /l y  は論理座標の行番号)
    // new ActiveXObject( "WScript.Shell" ).Run( '"' + editor.FullName + '" /l ' + sel.GetActivePointY( mePosLogical ) + ' "' + document.FullName + '"' );
    // ScrollY = sel.GetActivePointY( mePosView );	// 念を押して
    
     |  sukemaru  |  返信
  5. うぅ。横スクロールになってしまいましたか...。

    それはおいても <pre> タグでの構文の強調表示がちょっと変ですね。→ インラインコメントの着色
    先日も { ... } がグレーになっていました(← コメントアウトの強調色?)

     |  sukemaru  |  返信
  6. 遅くなりました。ご回答ありがとうございます。
    ScrollY = sel.GetActivePointY(mePosView);
    の追加で現状望む動作になりました。
    手法も色々あるようで気合&勉強不足でした。
    ありがとうございました。

     |  すなふきん  |  返信
スポンサーリンク