[ 新規に投稿する ]

BOX選択時のselopenyについてNo.10443
igus さん 24/08/05 11:19 [ コメントを投稿する ]
  BOX選択をしたときselopenyはカーソルとはの反対側のy座標を返してくれます。
この状態で文字を入力したとき画面上はBOX選択が継続しているように見えるのですがrectselectingを調べてみると0になってしまいselopenyの値もカーソル側のy座標を返します。
BOX選択で文字を入力したときにカーソルとはの反対側のy座標を調べる手段はないでしょうか?
[ ]
RE:10443 BOX選択時のselopenyについてNo.10444
秀丸担当 さん 24/08/05 16:25 [ コメントを投稿する ]
  BOX選択で文字入力したときは、以前はBOX選択での特殊な状態でしたが、今は複数選択化される状態になっています。
[その他]→[動作環境]→[編集]→[高度な編集1]→[BOX選択中にキーを押すとその文字を各行に挿入する]の、[...]ボタンの中の設定によります。
従来の動作もできますが、通常は複数選択です。

この状態では、rectselectingは0で、multiselectingやmultiselectcountで判断し、複数選択として各種の状態を調べることになります。
[ ]
RE:10443 BOX選択時のselopenyについてNo.10445
こみやんま さん 24/08/05 16:35 [ コメントを投稿する ]
  >この状態で文字を入力したとき画面上はBOX選択が継続しているように見えるのです

BOX選択中からの複数個所入力まわりって、設定によっても基本的な挙動が変わってしまうので、

--- test.mac ---
setcompatiblemode 0x00100000;

jsmode "WebView2";
js {
debuginfo(2);
hidemaru.clearInterval(interval);
var interval = hidemaru.setInterval(()=>{ hidemaru.postExecMacroMemory("js { var_dump_selectedrange(); }"); }, 1000 );

var lastStrSelectedRange = "";

function var_dump_selectedrange() {
    let range = getselectedrange({unit:"wcs"});
    let jsonRange = JSON.stringify(range);
    if (jsonRange != lastStrSelectedRange) {
        console.log("rect" + rectselecting());
        console.log("multi" + multiselecting());
        console.log(jsonRange);
    }
    lastStrSelectedRange = jsonRange;
}

}
--- 
あたりのマクロを「1度実行」し、「該当のBOX選択⇒文字列入力」をしてみて、
アウトプット枠に出てくる値をみて、
「range」オブジェクト(getselectedrangeの返り値)がどのような値になるのか確認し、
ご自身の設定で使えそうな値拾う感じじゃないですかねー。

[ ]
RE:10444 BOX選択時のselopenyについてNo.10446
igus さん 24/08/05 17:28 [ コメントを投稿する ]
  multiselectcountの分だけyを移動させることで上手くいきました。ありがとうございました。
[ ]

[ 新規に投稿する ]