前のカーソル位置No.07370
bouz さん 05/04/14 13:28
 
マクロでmoveto、gofiletopなどとやると、前のカーソル位置がマクロ
実行前と変わってしまいますが、これを変えないような命令は新設でき
ませんか?
disableprev、enableprevのような。
あるいは、前のカーソル位置、を取り出したり、再設定したりするもので
もいいんですが。マーク一覧に表示されない特殊なマーク、という風に
認識した上での提案です。
マクロを実行後、前のカーソル位置をやると戸惑うことが多いです。
秀丸の軽快さが損なわれるようなら、かまわないです。

[ ]
RE:07370 前のカーソル位置No.07373
秀丸担当 さん 05/04/14 19:08
 

>マクロでmoveto、gofiletopなどとやると、前のカーソル位置がマクロ
>実行前と変わってしまいますが、これを変えないような命令は新設でき
>ませんか?

movetoを2回やると、1回目のmovetoは前のカーソル位置を設定することになる
ので、それで応用できるかもしれません。
マクロ実行時にprevposをしてからxとyを記憶し、処理をして、復元するときに
movetoで覚えていたxとyに移動し、もう一度movetoで移動すべきところに移動す
ると、できるかもしれないです。試していないですが。

[ ]
RE:07373 前のカーソル位置No.07374
bouz さん 05/04/14 19:32
 
>movetoを2回やると、1回目のmovetoは前のカーソル位置を設定することになる
>ので、それで応用できるかもしれません。
>マクロ実行時にprevposをしてからxとyを記憶し、処理をして、復元するときに
>movetoで覚えていたxとyに移動し、もう一度movetoで移動すべきところに移動す
>ると、できるかもしれないです。試していないですが。

あ、それなら既にあって、
// template.mac
// ここに動作の説明を書く
call pushscrposition;
// ここにうまくいったらresult=1を返すコマンドを書く
call popscrposition result;
endmacro;

// カーソル位置を保存
pushposition:
#push_x = x; #push_y = y;
#push_scr_y = -1;
return;

// カーソル位置を復帰
popposition:
moveto #push_x, #push_y;
return;

// 前の位置と画面先頭位置も保存、描画禁止
pushscrposition:
call pushposition;
disabledraw;
prevpos;
#push_prev_x = x; #push_prev_y = y;
prevpos;
goscreentop;
#push_scr_y = y;
prevpos;
return;

// 前の位置と画面先頭行を復帰、描画許可 (##1=1でマクロ実行前のカーソル位置に
戻る。)
popscrposition:
if (##1) call popposition;
moveto #push_prev_x, #push_prev_y;
prevpos;
if (##1||#push_scr_y<0)
 enabledraw;
else
 enabledraw #push_scr_y;
return;

こんなふうにすれば、前の位置をちゃんと戻せます。
要は // ここにうまくいったらresult=1を返すコマンドを書く
が1行とかだと、本業よりも長すぎるなぁと思ったので、
1行で待避できるコマンドが欲しいなぁ、と思っただけのことです。
現状でも出来ることは出来ます。(^_^;)

[ ]
RE:07374 前のカーソル位置No.07375
bouz さん 05/04/14 19:43
 
間違ってました。
>// 前の位置と画面先頭行を復帰、描画許可 (##1=1でマクロ実行前のカーソル位置
>に戻る。)
##1=0で

>if (##1) call popposition;
if (!##1) call popposition;

相変わらずあわてものです。

[ ]
RE:07374 前のカーソル位置No.07381
秀丸担当 さん 05/04/15 14:09
 

>こんなふうにすれば、前の位置をちゃんと戻せます。
>要は // ここにうまくいったらresult=1を返すコマンドを書く
>が1行とかだと、本業よりも長すぎるなぁと思ったので、
>1行で待避できるコマンドが欲しいなぁ、と思っただけのことです。
>現状でも出来ることは出来ます。(^_^;)

既にやっていましたか。
マクロ文の肥大化も問題と思っていますし、マクロ処理の本体で、テキストの内
容が変わる場合も前のカーソル位置を保持するようにすると、大変なことになっ
てくるので、現状でもできるのでこのままとしたいと思います。

[ ]
RE:07381 前のカーソル位置No.07388
bouz さん 05/04/15 17:43
 
>既にやっていましたか。
>マクロ文の肥大化も問題と思っていますし、マクロ処理の本体で、テキストの内
>容が変わる場合も前のカーソル位置を保持するようにすると、大変なことになっ
>てくるので、現状でもできるのでこのままとしたいと思います。

了解です。こんなとこちょこちょこ変えてたら、マクロの仕様から大幅変更した方が
いい気になりますもんね。

[ ]