[ 新規に投稿する ]

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(ネイティブ)が、第2引数以降でバNo.10685
こみやんま さん 25/04/19 07:03 [ コメントを投稿する ]
  拡張子に対して、「自動インデント」が「有効でないファイル」で
試してみると、ネイティブinsertとマクロinsertの違いがハッキリ出るかと思います。
[ ]
RE:10685 jsmode の insert(ネイティブ)が、第2引数以降でバNo.10687
秀丸担当 さん 25/04/21 09:27 [ コメントを投稿する ]
  バグ情報ありがとうございます。
jsのinsertで、第2パラメータが2のときの改行がうまくいっていませんでした。
次のβ版で修正させていただきます。
[ ]
RE:10687 jsmode の insert(ネイティブ)が、第2引数以降でバ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(ネイティブ)が、第2引数以降でバNo.10692
秀丸担当 さん 25/04/24 17:53 [ コメントを投稿する ]
  inputstatesの件も併せて、早速のご確認ありがとうございます。
[ ]

[ 新規に投稿する ]