|
やはりマクロになるのですね。
クリップボードの中身変えたくなかったので
他のやり方にしました。
// たいして動作確認していませんがこんな感じにしてみました。
// 未選択状態の場合、終了
if (rectselecting == 0) {
// 通常の貼り付け処理
paste;
endmacro;
}
// 貼り付け拡張処理
beginclipboardread;
#i = 0;
// クリップボードのすべての行を取得
$a[#i] = getclipboard;
while ($a[#i] != "") {
#i = #i + 1;
$a[#i] = getclipboard;
}
if ($a[0] == "" || (#i > 0 && $a[1] != "")) {
// 通常の貼り付け処理
paste;
endmacro;
}
// 1行しか格納されていない場合
#start = seltopy;
#end = selendy;
$clip = $a[0];
// 改行コードがあれば除去
if (rightstr($clip, 1) == "\x0A") {
$clip = leftstr($clip, strlen($clip) - 1);
}
#x1 = seltopx;
#x2 = selendx;
disabledraw;
escape;
while (#start <= #end) {
moveto #x1, #start;
beginsel;
moveto #x2, #start;
endsel;
delete;
insert $clip;
#start = #start + 1;
}
enabledraw;
endmacro;
|
|