【要望】マクロの機能拡張(イベントフック、本体機能やプラグインの呼び出し)

  1. 【要望】マクロの機能拡張(イベントフック、本体機能やプラグインの呼び出し)

    はじめまして。いつもMeryにお世話になっています。
    なぜかこのフォーラムの右ペインの検索機能が使えない(私の環境だけ?)ため検索できず、過去ログを全部は確認できていないので、既出でしたらすみません。

    Meryはシンプルな使い勝手でありながら非常に強力なマクロを使えることがとても魅力的なので、以下の機能拡張をしていただけると嬉しいです。

    ①ファイルのオープン/クローズ/保存、アクティブタブ(ウィンドウ)切り替え、エディタ終了などのイベントにフックしてマクロを実行する機能
    ②マクロからMery本体機能の呼び出し(特に「ファイルから検索」ダイアログが出せたら嬉しいです)
    ③マクロからプラグインの呼び出し(特に「Webプレビュー」プラグインのON/OFFを切り替えられたら嬉しいです)

    ①についてはプラグインを自作しようと思っていましたが、確認した範囲ではプラグインからマクロを実行することはできなさそうだったので……もし現在のプラグインインターフェースで可能なようでしたら、どうかご教示ください。
    ご検討いただければ幸いです。

     |  noonworks  |  返信
  2. Kuro さんではありませんが,知っている限りでの代案と情報を.

    > ①ファイルのオープン/クローズ/保存、アクティブタブ(ウィンドウ)切り替え、エディタ終了などのイベンイベントはプラグインで対応する必要がありますが,プラグインからマクロを呼び出すインタフェースはないですね.
    直接プラグインに処理を記述してしまうか,マクロに割り当てた特定のキーをプラグインから叩くぐらいしか思いつきません.(個人的に準互換マクロエンジンの開発をしていましたが,途中で投げてます……)

    > ②マクロからMery本体機能の呼び出し(特に「ファイルから検索」ダイアログが出せたら嬉しいです)
    非公式ですが,Editor.ExecuteCommandByID() で機能を直接叩けます.
    プラグイン用の plugin.h に MEID_*** で記述されている番号を引数に渡します.
    「ファイルから検索」は MEID_SEARCH_FIND_IN_FILES なので Editor.ExecuteCommandByID(2140) で起動できます

    > ③マクロからプラグインの呼び出し(特に「Webプレビュー」プラグインのON/OFFを切り替えられたら嬉しいです)
    これも ExecuteCommandByID で可能で,渡す番号はプラグインの上から順に 7168,7169,……となっています.
    汎用的なものではありませんが,個人で環境が決まっているようでしたら使えると思います.

     |  ks  |  返信
  3. ksさん

    さっそくEditor.ExecuteCommandByID()を試してみたところ、②や③の動作ができました!
    もう少し詳しく調べてみようと思います。ありがとうございます。

    >マクロに割り当てた特定のキーをプラグインから叩く
    その発想はなかった!です。これなら私でもなんとかできる気がするので、この週末にやってみます。
    ちなみに、プラグインに処理を書くのではなくマクロにしたいな、と思った理由は、作業中に気付いた時点でサッとフックスクリプトを追加できたらいいなぁというものでした。

    ところで、もしかすると「Meryのマクロ実験室」ブログのksさんでしょうか?(人違いでしたら申し訳ありません。)
    つい先日ブログを見つけて読み始め、特にプラグインに関して参考にさせていただいています。
    この場をお借りするようで恐縮ですが、今回のご助言およびブログでの大変わかりやすい情報の提供、本当にありがとうございます!

     |  noonworks  |  返信
  4. > ちなみに、プラグインに処理を書くのではなくマクロにしたいな、と思った理由は、作業中に気付いた時点でサッとフックスクリプトを追加できたらいいなぁというものでした。
    フックマクロだと,エラーが発生するとえらいことになりそうな気もしますが,他のエディタだとどうなってるんでしょうかね.
    ただ Mery の起動や終了,ファイルを開いたときなどにマクロを使いたいという場面はありそうです.
    (Mery の起動だけなら,起動オプションにマクロを設定したショートカットを利用する手もありますが……)

    > ところで、もしかすると「Meryのマクロ実験室」ブログのksさんでしょうか?
    正しく,その ks でございます.
    ここ半年あちらは放置してしまっていますが,最近になってやっと .NET ベースプラグインの開発を再開したので,更新まで今しばらくお待ちいただければ幸いです.
    JScript でマクロが書ける人なら C# でのプラグイン開発も簡単なはずなので,もっとプラグイン作者が増えることを祈りまして.

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