[スレッド全体]

2010/4/17 (土) 01:33:42  
[489] Re: マクロの移植について

// 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);
}
もか
INCM1.23c

[▼次のスレッド]
INCM/CMT
Cyclamen v3.81