アウトプットバーさん、放課後に校舎裏で待ってます

  1. Kuroさま、いつもMeryの開発、ありがとうございます
    そして便利なマクロを公開してくれている先人の皆様、ありがとうございます

    https://imgur.com/a/O5N0OlS
    JavaScriptをさっぱりわからなかった私ですが、ちょこちょこリファレンスを参照したり、皆様のマクロを拝見したりして、このように自分用のポップアップメニューを作成でき、活用させて頂いております

    急急如律令さんの自動ルビ振りには驚愕しました。まさか記号だけでなくフリガナまで自動で入力してくれるとは。
    masmeさんの文字カウントは改行空白抜きの文字数をカウントしてくれるのでとても重宝しています。また、アイコン作成経験のない私が挑戦してみようと興味を持ちました。蜜柑のようなアイコンです。素人作なのでかなり浮いてるというか、異物感がありますが可愛く出来たと思ってます。
    furuさんの旧漢字から新漢字に変換はマクロだけでなく強調表示にも頂きました。
    Kuroさんの特殊文字入力プロンプトは実は中身が理解できていませんがまるごと頂いています。他にも私の力不足で読み解けないマクロはたくさんありますが活用させて頂いています。
    goatさんのブックマーク一覧もすごく便利でちょっと工夫してサブメニュー化させて頂きました。また、このマクロをもとに検索一覧を作成させて頂きました。
    手石さんのラクラク罫線が最近のマイブームで、表を作成しては元に戻しを繰り返しています。最後の微調整フェイズが期待と興奮が高まるポイントですよね。PCの前で「よぉし!」って言ってます。私は何らかのスタンド攻撃を受けているのかもしれません。

    この場を借りて、皆様に御礼申し上げます、ありがとうございます。

    自分で作成したマクロは、〇〇表示というものが多いです。ショートカットキーなどを自分で登録したのによく忘れるので、確認するためにアウトプットバーに表示しています。
    こんなことを言うのはちょっと恥ずかしいんですが、どうやら私は、アウトプットバーのことが、す、好き、みたいです。
    本来の使い方とはちょっとズレてる気がしなくもないですが。

    少し質問させていただいても良いでしょうか?
    editor.ExecuteCommandByID(id);
    によって、マクロのカスタマイズを開きたいのですが、idに
    MEID_MACROS_CUSTOMIZE = 2176 または 4178?
    を設定しても上手く開いてくれません。

    オプションや編集モードの設定などは上手く開いてくれます。
    どこかの記事で「隠し機能なので使用の際は自己責任」という趣旨が書かれていましてので大変恐縮なのですが、また、メインメニューから開けば解決することなので申し訳ないのですが、教えて頂けないでしょうか。どうぞよろしくお願いいたします。

     |  シリル  |  返信
  2. ご愛用いただきありがとうございます。

    特殊文字入力マクロ、ご参考になったのであればなによりです ^^
    Mery Ver 2.6.13 で本体の標準機能に搭載された [文字コードの切り替え] で同様のことが可能ですから、特殊文字入力マクロは次のバージョンからは削除する予定となっておりますのでご了承くださいませ。

    マクロからマクロのカスタマイズを開く方法ですが、ご提示された方法で合ってると思います。

    editor.ExecuteCommandByID(2176);

    でうまく動かない場合は、Mery のバージョンが古いか、マクロのなかに何か問題があるか、Mery の不具合かもしれません。

     |  Kuro  |  返信
  3. > editor.ExecuteCommandByID(2176);
    >
    > でうまく動かない場合は、Mery のバージョンが古いか、マクロのなかに何か問題があるか、Mery の不具合かもしれません。

    お返事ありがとうございます。
    Meryのバージョンは2.6.13を使用しています。おかしいなと思って
    editor.ExecuteCommandByID(2176);
    だけを記述したマクロを作ってみたところ、ちゃんと動作しました

    ということは、私のマクロがおかしいと思い、書き間違いなどチェックしたのですが間違いを見つけられず……
    ポップアップメニューのTrackの前後やswitchの中や後にも上記を直書きしてみたりしたのですが上手くいきませんでした

    焦って何か、私が勘違いしているのだろうと思います。後日落ち着いてもう一度チェックしようと思います。
    どうもありがとうございました。

     |  シリル  |  返信
  4. 調べてみました。どうやら検索やブックマークと相性が良くないようです
    なるべく簡略化してみましたので以下をご覧ください

    // ----ここから----
    //document.selection.FindRepeat(meFindNext | meFindAround);
    //document.selection.Find("メニュー", meFindNext | meFindAround );
    //document.selection.NextBookmark();

    // ポップアップメニュー作成
    var pp = CreatePopupMenu();
    pp.Add("ツール > オプション", 1);
    pp.Add("マクロ > カスタマイズ", 2);

    // ポップアップメニューを表示
    var mid = pp.Track(0);

    // メニュー項目毎の処理
    switch(mid){
    case 0: break;
    case 1: editor.ExecuteCommandByID(2177); break;
    case 2: editor.ExecuteCommandByID(2176); break;
    default: break;
    }
    // ----ここまで----

    1行目、2行目、3行目はコメントアウトしているのでこのマクロは動作します
    比較用に「ツール>オプション」を開く機能もつけてあります
    オプションとマクロのカスタマイズのどちらかを選んで開くだけですが、1,2,3行目のどれかを有効にするとマクロのカスタマイズだけが開けなくなります。オプションは開けます。

    ポップアップメニューの中で検索一覧やブックマーク一覧を作る際にそれぞれ動かしていますから、それで開けなくなっていたようです。
    私には、これ以上のことはわかりません。とはいえ、直すとなるとなんだか大変そうだなという気がします。Kuroさんの負担になってしまいそうなので直さなくてもいいです。

    検索一覧やブックマーク一覧はとても気に入っているので、マクロのカスタマイズを開く機能だけ諦めれば良いですし、そもそもメニューから開けますので。
    一応、報告でした。

     |  シリル  |  返信
  5. ご報告ありがとうございます。

    いただいた情報をもとに、Mery のソースコードを確認してみましたところ、[マクロのカスタマイズ] はマクロの実行中はメニュー (Mery の画面上部のメニューのことです) から実行不可にするための制御がはいっておりました。

    ExecuteCommandByID はメニューの中にあるコマンドを無理やり呼び出すだけの機能なので、メニューが実行不可の状態の場合は動作いたしません。

    恐らく、マクロの実行中に [マクロのカスタマイズ] からマクロの追加・削除が行われてしまうと動作不良のもとになるためにメニューから実行不可にしたのだと思います。

    どうしてもマクロから呼び出す必要があるのであれば、対策を検討してみたいと思います。

     |  Kuro  |  返信
  6. お返事ありがとうございます
    そして調査のためにお手間を取らせてしまい、申し訳ありませんでした

    > 恐らく、マクロの実行中に [マクロのカスタマイズ] からマクロの追加・削除が行われてしまうと動作不良のもとになるためにメニューから実行不可にしたのだと思います。

    私もそうあるべきだろうなと納得できる仕様だと思います
    妙な使い方をしてしまい、すみませんでした

    > どうしてもマクロから呼び出す必要があるのであれば、対策を検討してみたいと思います。

    いえ、こんなことに手間を取らせてしまっては、申し訳無さのあまり泣いてしまいます

    今回のことでコツがわかりましたので、ワガママな気持ちになった時は自分で対応出来ると思います
    丁寧に対応して頂き、どうもありがとうございました

     |  シリル  |  返信
スポンサーリンク