jsmode の insert(ネイティブ)が、第2引No.10684
こみやんま さん 25/04/19 06:55
 
以下が多分ちゃんと動作しないと思います。

// ---- HmAnotherIndent.mac

jsmode "JScript\\" + currentmacrofilename;

js {

debuginfo(2);
function insertAnotherIndent() {
    var orgIndent = getconfig("Indent");

try {
    // インデント有効なら
    if (orgIndent > 0) {
        // ただの改行挿入
        insert("\n");

    // インデント無効なら
    } else {
        insert("\n", 2, 0x0001|0x0010); // ★ ここが実行される時であっても有
効な改行が入らない。
    }
} catch(e) {
    console.log(e);
}

}

insertAnotherIndent();

}


// -------------------------------------------------

次のように insert を(ネイティブではなく)マクロ本来の insert 挙動に戻すと機能
するので、なんかどっかでバグっているかと。


// ---- HmAnotherIndent.mac

jsmode "JScript\\" + currentmacrofilename;

js {

var gtv = hidemaru.getVar;
var evm = hidemaru.evalMacro;

var st1s="var s=m+' ';for(var i=0;i<arguments.length;i++){if(i>0)s+=',';var
a=arguments[i];if(i==0||typeof(a)=='string'){s+='R\"\xFF('+a+')\xFF\"';}else
{s+=a;}}evm(s+';###=result;');var r=gtv('###');";
insert = function(){var m="insert";eval(st1s);return r;}; // ★ insertをネイ
ティブではなく、元来のマクロの挙動にする

debuginfo(2);
function insertAnotherIndent() {
    console.log("OK");
    var orgIndent = getconfig("Indent");

try {
    // インデント有効なら
    if (orgIndent > 0) {
        // ただの改行挿入
        insert("\n");

    // インデント無効なら
    } else {
        insert("\n", 2, 0x0001|0x0010); // これは大丈夫。機能する
    }
} catch(e) {
    console.log(e);
}

}

insertAnotherIndent();

}

[ ]
RE:10684 jsmode の insert(ネイティブ)がNo.10685
こみやんま さん 25/04/19 07:03
 
拡張子に対して、「自動インデント」が「有効でないファイル」で
試してみると、ネイティブinsertとマクロinsertの違いがハッキリ出るかと思います。

[ ]
RE:10685 jsmode の insert(ネイティブ)がNo.10687
秀丸担当 さん 25/04/21 09:27
 
バグ情報ありがとうございます。
jsのinsertで、第2パラメータが2のときの改行がうまくいっていませんでした。
次のβ版で修正させていただきます。

[ ]
RE:10687 jsmode の insert(ネイティブ)がNo.10691
こみやんま さん 25/04/24 16:21
 
insert 大丈夫そうです。(非同期内でも大丈夫そう)

hidemaruversion "9.46.05";

jsmode "JScript\\" + currentmacrofilename;

js {

// その拡張子のインデント設定とは逆のインデントを行う
function insertAnotherIndent() {
    var orgIndent = getconfig("Indent");

    // インデント有効なら
    if (orgIndent > 0) {
        // ただの改行挿入
        insert("\n");

    // インデント無効なら
    } else {
        // インデント有効
        insert("\n", 2, 0x0001|0x0010);
    }

}

var timeoutHandler;
if (typeof(timeoutHandler) != "undefined") {
    hidemaru.clearTimeout(timeoutHandler);
}

timeoutHandler = hidemaru.setTimeout(insertAnotherIndent, 0);

}

[ ]
RE:10691 jsmode の insert(ネイティブ)がNo.10692
秀丸担当 さん 25/04/24 17:53
 
inputstatesの件も併せて、早速のご確認ありがとうございます。

[ ]