◀マクロトップへ
  • 209 PerlScriptマクロの使用法をマクロヘルプに
    • 210 Re: PerlScriptマクロの使用法をマクロヘルプに
      • 212 Re2: PerlScriptマクロの使用法をマクロヘルプに
        • 213 Re3: PerlScriptマクロの使用法をマクロヘルプに
    • 211 Re:PerlScriptマクロの使用法をマクロヘルプに
      • 214 Re2:PerlScriptマクロの使用法をマクロヘルプに
        • 215 Re3: PerlScriptマクロの使用法をマクロヘルプに
          • 216 Re4: PerlScriptマクロの使用法をマクロヘルプに
            • 217 Re5: PerlScriptマクロの使用法をマクロヘルプに
            • 218 Re5: PerlScriptマクロの使用法をマクロヘルプに
        • 219 Re3: PerlScriptマクロの使用法をマクロヘルプに
          • 221 Re4: PerlScriptマクロの使用法をマクロヘルプに
            • 222 Re5: PerlScriptマクロの使用法をマクロヘルプに
  • [209] PerlScriptマクロの使用法をマクロヘルプに maru 2005年09月23日 16:58

    りーやさん、miauさんがPerlScriptについて
    追求された成果がまとまってきましたので
    Perlならではの注意点やTipsを整理して
    SakuraMacro.chmに取り込みたいと思います。

    PerlScriptはほとんど使わないので
    いろいろとご教示いただきたく。

    ▼りーやさん
    「PerlMacro.txt」にて以下の部分がわかりません。
    文頭で無サポートをうたっていますが、教えてください。

    > これを $Editor->SPACEToTAB(); なんてやるとエラーになる。
    このエラーはうちの環境では再現しません。
    $Editor->マクロ関数名();
    の記述はNG、の意味?

    ▼miauさん
    > ファイル全体の文字数>スクリプト部分のバイト数
    コメント文中なら2バイト文字を無制限に使用できる、という
    意味に見えますが、あってますか?
    • [210] Re: PerlScriptマクロの使用法をマクロヘルプに りーや 2005年09月23日 21:36

      ▼ maruさん
      >Perlならではの注意点やTipsを整理して
      >SakuraMacro.chmに取り込みたいと思います。

      どうも、いつもご苦労さまです。

      >▼りーやさん
      >> これを $Editor->SPACEToTAB(); なんてやるとエラーになる。
      >このエラーはうちの環境では再現しません。
      >$Editor->マクロ関数名();
      >の記述はNG、の意味?

      えっと、今のマクロヘルプだと「マクロの関数名について」に
      なるのか?サクラエディタのオンラインヘルプのWSHマクロ
      のところに以下のように書かれてます。
      >サクラエディタのオブジェクト名はEditorです。
      >メソッド名には、S_は付きません。
      Perlの書き方だとこれは、$オブジェクト名->メソッド名のように
      $Editor->InsText('<br />');
      のようにして試したくなったのですが、マクロの動く名前空間?
      では、$Editor->InsText('<br />');もEditor->InsText('<br />');
      もダメで、オブジェクト名なしのメソッド名のみがOK。
      InsText('<br />');
      が使えます。私にとっては経験則なので理由はわかりません。

      ということなんですが・・・

      • [212] Re2: PerlScriptマクロの使用法をマクロヘルプに (全略) 2005年09月23日 23:29

        ▼ りーやさん
        > えっと、今のマクロヘルプだと「マクロの関数名について」に
        > なるのか?サクラエディタのオンラインヘルプのWSHマクロ
        > のところに以下のように書かれてます。
        > >サクラエディタのオブジェクト名はEditorです。
        > >メソッド名には、S_は付きません。
        > Perlの書き方だとこれは、$オブジェクト名->メソッド名のように
        > $Editor->InsText('<br />');
        > のようにして試したくなったのですが、マクロの動く名前空間?
        > では、$Editor->InsText('<br />');もEditor->InsText('<br />');
        > もダメで、オブジェクト名なしのメソッド名のみがOK。
        > InsText('<br />');
        > が使えます。私にとっては経験則なので理由はわかりません。
        ご存じかもしれませんが

        Editor.InsText('aaa');
        &InsText('ccc');
        InsText('ddd');

        が通るみたいですね、他にもあるのかな?
        • [213] Re3: PerlScriptマクロの使用法をマクロヘルプに りーや 2005年09月24日 10:27

          ▼ (全略)さん
          >ご存じかもしれませんが
          >
          >Editor.InsText('aaa');
          >&InsText('ccc');
          >InsText('ddd');
          >
          >が通るみたいですね、他にもあるのかな?

          しらなかったっす。。
          ひとつ動くのを見つけたから、それまでで・・・

          どうもピリオドは連接演算子のイメージ強いし、
          サブルーチン呼び出しの書式も抵抗あるので
          やはり一番下で続けようかと思うんですが、
          なにが正しいんでしょ?

          まぁ、動けばいいかぁ
    • [211] Re:PerlScriptマクロの使用法をマクロヘルプに miau 2005年09月23日 23:20

      ▼ maruさん
      > > ファイル全体の文字数>スクリプト部分のバイト数
      > コメント文中なら2バイト文字を無制限に使用できる、という
      > 意味に見えますが、あってますか?

      わかりにくくてすいません。
      ここで言う「スクリプト部分のバイト数」というのは、
      ファイルの先頭から「ここまで実行させたい」という位置までのバイト数のことです。

      例えば、

      # 選択部分の文字列を取得
      $sel = GetSelectedString();
      :
      :(何か一連の処理)
      :
      MsgBox($result);
      #padding
      #padding
      #padding

      というようなスクリプトを書いた場合、
      MsgBox の行末までを「スクリプト部分のバイト数」と表現しました。


      あと、簡単な解析&短い経験から
      >ファイル全体の文字数>スクリプト部分のバイト数
      になっていれば大丈夫だと思うんですが、
      確実とは言えない気もしてきました。

      代替策として PerlScript 5.8.7.813 用のパッチというのも作ってみました。

      http://miau.s9.xrea.com/blog/index.php?itemid=402

      好みに応じてこれを使っても大丈夫・・・だと思います。
      • [214] Re2:PerlScriptマクロの使用法をマクロヘルプに maru 2005年09月24日 16:32

        皆様、回答ありがとうございます。

        ある程度PealScriptの解説を取り混ぜて2005.09.24版とします。
        http://www.geocities.jp/maru3128/sakura.html#macrohelp

        >>dev:4044の解説ついては本家に取り込まれるのを待つことにします。

        追記事項・誤記などありましたらご指摘いただきたく。

        ▼りーやさん
        > オブジェクト名なしのメソッド名のみがOK。
        うちの環境では「$Editor->InsText('aaa');」は動作できました。
        環境によって、ということでしょう。

        ▼ miauさん
        > ファイルの先頭から「ここまで実行させたい」という位置までのバイト数のことです。
        了解しました。

        > 代替策として PerlScript 5.8.7.813 用のパッチというのも作ってみました。
        > http://miau.s9.xrea.com/blog/index.php?itemid=402
        なんだかややこしそうな力技ですね・・・。
        おつかれさまです。

        http://www.geocities.jp/maru3128/sakura.html#file2>支援ツール
        からリンクを貼らせていただきました。
        • [215] Re3: PerlScriptマクロの使用法をマクロヘルプに りーや 2005年09月24日 16:51

          ▼ maruさん
          >うちの環境では「$Editor->InsText('aaa');」は動作できました。
          >環境によって、ということでしょう。

          今やってみたらウチでも動作できました。
          前はダメだったような気がするのですが・・・

          • [216] Re4: PerlScriptマクロの使用法をマクロヘルプに miau 2005年09月24日 18:01

            ▼ りーやさん
            > ▼ maruさん
            > >うちの環境では「$Editor->InsText('aaa');」は動作できました。
            > >環境によって、ということでしょう。
            >
            > 今やってみたらウチでも動作できました。
            > 前はダメだったような気がするのですが・・・

            $Editor というグローバル変数があるみたいですね。
            use strict してる場合は

            our $Editor;

            としてやらないと使えない、ということだと思います。

            でもそうなると逆に、なぜ $Editor を省略しても
            マクロ関数を呼べるのかが謎なんですが・・・
            • [217] Re5: PerlScriptマクロの使用法をマクロヘルプに maru 2005年09月24日 18:57

              ▼ miauさん
              > $Editor というグローバル変数があるみたいですね。
              > use strict してる場合は
              > our $Editor;
              > としてやらないと使えない、ということだと思います。

              リファレンスのマクロ関数名のところ、修正しました。
            • [218] Re5: PerlScriptマクロの使用法をマクロヘルプに もか 2005年09月24日 23:13

              >でもそうなると逆に、なぜ $Editor を省略しても
              >マクロ関数を呼べるのかが謎なんですが・・・
              サクラエディタがスクリプトエンジンに渡す(聞かれる)
              オブジェクト情報が正しくないために、その辺に関係するバグかもしれません。
              言語側が元々使っている名前とバッティングしそうで怖いですよね。

              #JScript/VBScript等でも呼び出せるため気にはしていたのですが、
              #実装するのはすごく大変そうです。
        • [219] Re3: PerlScriptマクロの使用法をマクロヘルプに りーや 2005年09月25日 07:15

          ▼ maruさん
          >ある程度PealScriptの解説を取り混ぜて2005.09.24版とします。
          >http://www.geocities.jp/maru3128/sakura.html#macrohelp

          ごくろうさまです。すこし拝見しました。
          ウチの環境でなんですが、「マクロを部分実行するには」の
          ページが文字化けします。これはclipmacro.htmlをIEで開い
          ても同じで、エンコードが自動認識で西ヨーロッパ言語に
          認識されるみたいです。

          あと、キーワード・タブの「このヘルプファイルについて」と
          「マクロの関数名について」がページを表示できません。
          となります。
          • [221] Re4: PerlScriptマクロの使用法をマクロヘルプに maru 2005年09月25日 14:23

            ▼ りーやさん
            報告ありがとうございます。

            > ウチの環境でなんですが、「マクロを部分実行するには」の
            > ページが文字化けします。
            文字コードの指定を入れました。


            > あと、キーワード・タブの「このヘルプファイルについて」と
            > 「マクロの関数名について」がページを表示できません。
            > となります。
            キーワード・タブには不要?と思いますので削除しました。
            • [222] Re5: PerlScriptマクロの使用法をマクロヘルプに りーや 2005年09月25日 20:27

              ▼ maruさん
              >報告ありがとうございます。

              素早いご対応、頭が下がります。
              そこで小出しのようで恐縮なんですが・・・

              メッセージボックスについてのサンプルの
              RubyScript なんですが、私の環境では
              (ActiveScriptRuby 1.8.2.0)、このスクリプト
              を2回続けて行うとタスク終了してしまいます。

              残念ながら、安定した Ruby マクロって今の
              ところ難しそうです。