#4364
ShuHei
メンバー

// この時、ハイフンの行は選択範囲外。バグか意図なのか不明

これはマニュアルの通り正しい動作なんですが、
マクロの自由さが裏目にでちゃった例ですね。

もっと詳しく情報がでるマクロをこさえてみました。

var prog = ”
var str = ‘aaaaaaaaaaaaarn’;n
for(var i=0;i<3;i++){str += str;}n
document.write(str+’———————rnZZZZZZZZZZZZZrn’);n
document.selection.LineUp(false,2);n
editor.ExecuteCommandByID(4154);//行選択を開始n
//document.selection.SetActivePoint(eePosLogical, 1, 4);n
“;

recipe = prog.split(“n”);

for(var s in recipe)
{
if(recipe[s].replace(/^s+/,””).match(/^//.+/,””)){continue;}
eval(recipe[s]);
checkMode(“実行コード:” + recipe[s] + “n”,document.selection.Mode);
}

function checkMode(string,num)
{
x = document.selection.getActivePointX(eePosLogical);
y = document.selection.getActivePointY(eePosLogical);
sx = document.selection.getTopPointX(eePosLogical);
sy = document.selection.getTopPointY(eePosLogical);
ex = document.selection.getBottomPointX(eePosLogical);
ey = document.selection.getBottomPointY(eePosLogical);

ret = “選択の種類:”;
switch(num & eeModeMask)
{
case eeModeStream:
ret = ret + “eeModeStream”;
break;
case eeModeLine:
ret = ret + “eeModeLine”;
break;
case eeModeBox:
ret = ret + “eeModeBox”;
break;
case eeModeKeyboard:
ret = ret + “eeModeKeyboard”;
break;
case eeModeSelected:
ret = ret + “eeModeSelected”;
break;
}
ret = ret + “n”;
current_point = “現在のカーソル位置:” + x + “, ” + y + “n”;
anchor_point = “選択範囲の開始位置:” + sx + “, ” + sy + “n”;
bottom_point = “選択範囲の終了位置:” + ex + “, ” + ey + “n”;

alert(string + “n” +ret + current_point + anchor_point + bottom_point);
}


確かに行選択(Ctrl+F8)後にジャンプ(Ctrl+G)をすると描画領域が変になりますね。
マクロで調べる限りでは正しく選択範囲の最初と最後が
設定されているのですが、ジャンプした直後だとうまく切り取れないようですし・・・