|
まず、マクロを使わなくても、
1) 選択開始行で左トリプルクリックしたまま放さずに(トリプルドラッグ?)
選択終了行までマウスカーソルを移動して放す。
2) 選択範囲内でドラッグしたまま、移動先の行頭にドロップする。
で、クリップボードを使わずに、同様の編集ができます。
inputposが中止されたかどうかは、直後の resultの値で判別します。
Gavoさんのマクロは、こんな風に変えたらご希望の動作に近くなると思います。
#x = x; #y = y;
golinetop2;
beginsel;
movetolineno 1, lineno + 1;
call s1, "移動範囲選択後リターン";
if( ##return ){
escape;
moveto #x, #y;
} else {
cut;
call s1, "移動先は?";
#r = ##return;
poppaste; getcliphist 0;
if( #r ){
undo; undo;
moveto #x, #y;
}
}
endmacro;
s1:
while( 1 ){
##i = inputchar( $$1 );
if( ##i == 0x1F ) call s2, 1;
else if( ##i == 0x1D ) call s2, -1;
else if( ##i == 0x0D ) return no;
else if( ##i == 0x1B ) return yes;
}
s2:
movetolineno 1, lineno + ##1;
if( selecting && seltopy == selendy ){
movetolineno 1, lineno - ##1;
beginsel;
movetolineno 1, lineno + ##1 * 2;
}
return;
|
|