「このマクロを実行」が欲しい

  1. マクロメニューに「これを実行」が欲しいです。

    編集系のマクロを定義して使っていると、マクロを編集中にすぐ「編集」や「実行」対象のマクロが(使ったマクロに)切り替わってしまうので、そのたびに「これを選択」を選ばなければいけなくなります。

    折り返しを跨いだ行頭・行末移動なんかのマクロを定義していて、無意識に使ってることがあるので。(Home/Endだと折り返し位置でストップする)

    マクロの作成中、いじっては実行を繰り返していると「これを選択」→「実行」の手間が(ショートカットを設定しても)割と面倒なので。

     |  ほげ  |  返信
  2. こんにちは。
     マクロ→カスタマイズ→追加
    で編集中のマクロを追加しておいて、
     ツール→オプション→キーボード→カテゴリ「マクロ」
    でショートカットを割り当てる、でしょうか。

    私も最初、どうやれば良いのか分からずしばらく悩みました…。

     |  mio  |  返信
  3. 横から失礼します。

    > 編集系のマクロを定義して使っていると、マクロを編集中にすぐ「編集」や「実行」対象のマクロが(使ったマクロに)切り替わってしまうので、そのたびに「これを選択」を選ばなければいけなくなります。
    > マクロの作成中、いじっては実行を繰り返していると「これを選択」→「実行」の手間が(ショートカットを設定しても)割と面倒なので。

    自作マクロの「あるある」ですね。
    私も「これを選択」にショートカットキー [Ctrl+F4] を割りあてて、 [Ctrl+F4] → [F4] とやっていますが、たしかに一発で「このマクロを実行」できるほうが楽ですね。

    とりあえずマクロ化してマクロライブラリに投稿してみましたので、よろしければ適当にショートカットキーを割りふって使ってみてください。
    https://www.haijin-boys.com/wiki/アクティブなタブのマクロを実行する

     |  sukemaru  |  返信
  4. mio さんがご回答くださっている方法で個々のマクロにショートカットキーを割り当てればご希望の動作になると思います。

    ところで、[このマクロを実行] という機能だと、アクティブなタブのマクロがアクティブなタブ (編集中のマクロ) に対して実行されてしまうので困りませんか…?

     |  Kuro  |  返信
  5. > ところで、[このマクロを実行] という機能だと、アクティブなタブのマクロがアクティブなタブ (編集中のマクロ) に対して実行されてしまうので困りませんか…?

    それも「無きにしも非ず」ですね。 …「このマクロを実行」マクロを書いてテストしているときに気付いて、回避処理を入れました。 :D

    ポップアップメニュー系マクロならメニューの表示までの前処理が適切か確認したい場合などもありますし、ダイアログ、ステータス表示系のマクロなら全然問題ありません。
    アクティブタブに編集を加えるマクロでも実行後に Undo すればいいだけだから「とりあえず走らせてみたい」なんていうときもあります。
    マクロのコーディング中に Alert("ほげ") をはさんでテストしたりというのもよく、よくやります。

    私のばあい、新規マクロを起こすときや使い捨てのインスタントマクロを書くときはショートカット登録済みの TEST.js を使うことが多いですが、既存のマクロのバグ修正も日常茶飯事なので「このマクロを実行」マクロはわりと役に立ちそうです。
    ショートカットキーと右クリックメニューに前出の拙作マクロを登録したらE感じになりました。 :)

     |  sukemaru  |  返信
  6. こんな乱暴な方法もあります。
    編集中ファイルの保存不要、マクロメニューに痕跡を残さない。その代わり js限定、#include 非対応。

          
         var doctext = document.text.replace(/(^|[\r\n]+)#/g, "$1//#");
          try{
            eval(doctext);
          } catch(e) {
            alert(e.name + "\n" + e.message);
          }
     |  通りすがり  |  返信
  7. > こんな乱暴な方法もあります。
    > 編集中ファイルの保存不要、マクロメニューに痕跡を残さない。その代わり js限定、#include 非対応。

    ありがとうございます。
    コードを既存の "TEST.js" にコピペして試用してみました。

    なるほどですが、個人的に、F4 キーで再実行可能な履歴(痕跡)が TEST.js になることや、TEST.js をアクティブにして実行したときの例外処理の必要、#include 非対応、などの eval() の弊害が大きいですね。
    かえって使いどころが難しい気がします…。 :(

    よろしければ、拙作マクロについて問題点のご指摘などありましたらお願いします(「このマクロを実行」以外にも)。 :)

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