◀マクロトップへ
  • 488 マクロの移植について
    • 489 Re: マクロの移植について
      • 490 Re2: マクロの移植についてー大成功
      • 491 Re2: マクロの移植について
        • 492 Re3: マクロの移植について
          • 493 Re4: マクロの移植について
            • 494 Re5: マクロの移植についてーお詫びと御礼と
  • [488] マクロの移植について Ki 2010年04月16日 22:01

    いつもありがたく使用させていただいております。
    下記のマクロ(削除)は秀丸エディタで辞書引きソフトのLogophile
    を検索するファイルの内容なのですが、マクロについての
    知識がないために、サクラエディタにマクロの移植ができ
    なくて困っています。どなたかご教示願えないでしょうか?
    • [489] Re: マクロの移植について もか 2010年04月17日 01:33

      // execlogophile.js みたいな名前でマクロフォルダへ

      word_to_logophile();
      function word_to_logophile()
      {
      // カーソル位置の「検索キーワード」的なものを取得
      var str = Editor.ExpandParameter('$C');
      // 前後の空白類を置換で削除
      str = str.replace(/^[\s\u3000]+/, '').replace(/[\s\u3000]+$/, '');
      // 選択文字がない場合終了
      if( str.length == 0 ) return;
      // 文字をUnicode,16進数4桁にして+をつける
      str = str.replace(/./g, function(s){
      var hexstr = '000'+(s.charCodeAt(0).toString(16));
      return '+' + hexstr.match(/.{2,4}$/)[0];
      });
      var cmdLine = "\"C:\\Program Files\\Logophile\\Logophile.exe\" -f -u" + str;
      // 外部コマンドを実行(入出力なし)
      Editor.ExecCommand(cmdLine,0);
      }

      秀丸とLogophileの仕様が分からないので16進数4桁小文字にして送りつけます。
      うまく動かないときは下記のように調整してください。
      英語は2桁:'000'→'0'
      大文字でないとだめ:-u" + str → -u" + str.toUpperCase()

      Editor.がついてない部分は普通のJavaScriptです。
      短いのがいいならまとめてこんな感じで
      str=ExpandParameter('$C').replace(/^[\s\u3000]+/,'').replace(/[\s\u3000]+$/,'');
      if(str.length){
      str=str.replace(/./g,function(s){return '+'+('000'+(s.charCodeAt(0).toString(16))).match(/.{2,4}$/)[0];});
      ExecCommand("\"C:\\Program Files\\Logophile\\Logophile.exe\" -f -u"+str.toUpperCase(),1);
      }
      • [490] Re2: マクロの移植についてー大成功 Ki 2010年04月17日 11:07

        もかさん
         2つのマクロをありがとうございました。前者で早速試して
        みました。英語でも日本語でもうまくいきました。ほんとうに
        ありがとうございました。
      • [491] Re2: マクロの移植について Ki 2010年04月17日 12:32

        もかさん
        スレッドを別に立ち上げた方がよかったのですが、もうひと
        つ秀丸から辞書引きソフトのEBWinを呼び出して単語を引く
        ソフト(削除)があります。
        これもサクラエディタに移植していただけないでしょうか?
        サクラエディタで利用できますと便利なのですが、いかがで
        しょうか。お願いばかりで恐縮です。
        • [492] Re3: マクロの移植について わざわざ何を…… 2010年04月18日 17:32

          ▼ Kiさん

          もかさんはひとつひとつ説明を加えながらコードを提示しています。
          少なくとも下の二行に相当するコードがどの部分か、わかるのでは
          ないですか。

          $word = gettext(seltopx, seltopy, selendx, selendy);
          run "C:\\Program Files\\EBWin\\EBWin.exe /S=" + $word;

          gettextの 5番目の引数(1)が今度はありませんが、この説明は
          秀丸ユーザーだった Kiさんに出してもらいたいものです。
          (無視できるものかもしれませんが)

          ここのサイトの構造はわかりにくいのですがマクロの一覧はここにあります。
          http://sakura.qp.land.to/SakuraMacro/
          S_IsTextSelectedと S_SelectWordが、残った部分に相当するものではあ
          りませんか。先頭の S_については文字通り「※先頭の'S_'について」という
          項目が左のフレームの一番上にあります。最初のマクロより簡単
          ですから自分でもできそうに思えてきたんじゃないですか。

          言葉を尽くしても丸投げ連投では回答のハードルを上げます。
          答えはもらいにくくなりますよ。
          • [493] Re4: マクロの移植について もか 2010年04月18日 20:29

            最初に訂正
            見直してみると短い版がデバック用になってます。
            誤:+str.toUpperCase(),1);
            正:+str,0);

            >ここのサイトの構造はわかりにくいのですがマクロの一覧はここにあります。
            > http://sakura.qp.land.to/SakuraMacro/
            フォローありがとう。
            マクロなら今は普通のヘルプにも...と思ったけど一覧がどこにもないです。どこに載せるべきか。
            >言葉を尽くしても丸投げ連投では回答のハードルを上げます。
            >答えはもらいにくくなりますよ。
            そうですね。これ位なら15分程度でマクロを作てテストして投稿(解説を除く)までできますが、回答するのが面倒になりますね。
            EDWinとかのコマンドをネットで検索する時間が必要なので。

            あと重要な点として、「秀丸マクロの転載は著作権者の許可orライセンスにしたがっているか」確認してください。
            問題があれば、秀丸マクロの転載部分は削除します。

            実はEBWinのほうは、細かいことを考慮しないなら
            ・キーマクロの記録開始
            ・外部コマンド実行:"C:\Program Files\EBWin\EBWin.exe" /S=$C
            標準出力・標準入力のチェックをはずして実行
            ・キーマクロの記録終了&保存で名前をつける(.mac)
            これで、マクロができます。お試しください。

            // 前回のを応用した少し賢い版
            var str = Editor.ExpandParameter('$C');
            // 選択文字列のコピーの前後の空白をなくす(トリム)
            str = str.replace(/^[\s\u3000]+/, '').replace(/[\s\u3000]+$/, '');
            if( str.length ){
            // 保険 strを全置換「$」→「$$」$4つなのはJavaScriptのreplaceの仕様
            str = str.replace(/\$/g, "$$$$");
            Editor.ExecCommand("\"C:\\Program Files\\EBWin\\EBWin.exe\" /S="+str,0);
            }

            ・googleしたもの
            EBWin(辞書引きソフト/フリーソフト)
            http://www31.ocn.ne.jp/~h_ishida/EBPocket.html#download_win
            コマンドラインはここです。
            http://www31.ocn.ne.jp/~h_ishida/EBPocket/0_0_3_5.html
            • [494] Re5: マクロの移植についてーお詫びと御礼と Ki 2010年04月18日 20:55

               もかさんはじめ皆様の言うとおりです。ご指摘等ありがと
              うございます。
               もかさん、今回もほんとうにありがとうございます。長年
              できたら便利と思っておりましただけにありがたく利用させ
              ていただきます。これを機会にマクロの勉強をしなくてはい
              けません。
               「秀丸マクロの転載部分」ですがこれはとっても大切なご
              指摘だと思いました。削除させていただきました。