|
秀丸リーダーに付属のHmReadBack.macを実行して確認してみたところ、確かにおかし
かったです。
以下のようになっているとして、3桁目の位置でBackSpaceを押すと、タブが消えずに
aが消えてしまいました。
12345678
a> bcde
単純にマクロで、moveto x,y;とした場合、貫通する位置に留まる手段がマクロとし
て存在しないので、できていませんでした。
現状でなんとかするには、マクロではleftした後に元の位置に戻すためにmovetoをし
てしるので、movetoの代わりにrightにするマクロにするしかなさそうです。
例:
#x1=x;
#y1=y;
left;
#code = unicode;
right;//元々はmoveto #x1, #y1;
---------------------
HmReadBack.macの全マクロは以下のようになります。
範囲選択によって処理が分けられているので、その点も変えています。
秀丸リーダの今後のバージョンで入れ替えるようにします。
setcompatiblemode 0x0F;
#sel = selecting;
if( #sel ) {
#rect = rectselecting;
if( seltopx == selendx && ( seltopy == selendy || #rect != 0 ) ) {
endmacro;
} else if( #rect != 0 && seltopx >= linelen ) {
endmacro;
}
if( x == selendx && y == selendy ) {
#x1 = seltopx;
#y1 = seltopy;
} else if( x == seltopx && y == seltopy ) {
#x1 = selendx;
#y1 = selendy;
} else if( x == seltopx && y == selendy ) {
#x1 = selendx;
#y1 = seltopy;
} else {
#x1 = seltopx;
#y1 = selendy;
}
#x2 = x;
#y2 = y;
disabledraw;
right;
left;
#beginsel = selecting;
escape;
moveto #x2, #y2;
left;
#code = unicode;
moveto #x1, #y1;
} else {
#x1 = x;
#y1 = y;
left;
#code = unicode;
right;//moveto #x1, #y1;
}
if( #sel ) {
if( #rect ) {
beginrect;
} else {
beginsel;
}
moveto #x2, #y2;
if( ! #beginsel ) {
endsel;
}
enabledraw;
}
ddeinitiate "HidemaruReader", "Read";
if( #code == 13 ) {
ddeexecute "!かいぎょう";
} else if( #code == 9 ) {
ddeexecute "!タブ";
} else if( #code == eof ) {
ddeexecute "!ファイルのまつび";
} else if( #code == 0 ) {
ddeexecute "!ブランク";
} else {
ddeexecute "#" + unichar( #code );
}
ddeterminate;
|
|