秀丸エディターで自動スクロールしてくれ
No.41012
ひらひら
さん 24/01/12 00:44
お世話になります。
↓のページの一番下の例を参考に、
https://help.maruo.co.jp/hidemac/html/110_MacroStatement_disabledraw_enabledraw.html
秀丸エディターで2秒ごとに自動スクロールしてくれるマクロ(一番下の行まで行っ
たら停止)のコードを作ろうとしています。
とりあえず以下のコードまで考えました。(秀丸マクロの文法を詳しくフォローして
ないので意味不明なところがあったらすみません。)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
//グローバル変数の宣言
#scroll_y = 0;
#scroll_x = 0;
#screentopy_previous = 0;
while(1){
// 現在のスクロール位置
#scroll_y = screentopy + 1;
#scroll_x = screenleftx;
//現時点のy方向のスクロール位置を#screentopy_previousに格納
#screentopy_previous = screentopy;
//画面の書き換え禁止
disabledraw;
// 画面の書き換え許可
enabledraw #scroll_y, #scroll_x;
//スクロールしてもスクロール位置が変わらなかったらbreak
if(screentopy == #screentopy_previous){
break;
}
sleep 2000;
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
しかし以下2点の問題にぶつかりました。
@#scroll_y = screentopy + 1;
の+1は、+1ならずっとスクロールしてくれるけど+2とか+10とかにすると途中で止まる。
Aif(screentopy == #screentopy_previous){
break;
}
の部分がうまくいかない。(最後の行を突き抜けて永遠に下までスクロールしてしま
う)
どのようなコードに修正したらうまくいきますでしょうか?
恐れ入りますがどうぞよろしくお願いします。
[
△
]
RE:41012 秀丸エディターで自動スクロール
No.41013
igus
さん 24/01/12 08:41
enabledraw と同時にカーソル位置も移動してやるとうまく動作するようです
//autoscroll.mac
#scroll_y = 0;
#scroll_x = 0;
#screentopy_previous = 0;
#x=x;#y=y; //←追加(現在カーソル位置)
while(1){
#scroll_y = screentopy + 1;
#scroll_x = screenleftx;
#screentopy_previous = screentopy;
disabledraw;
moveto #x,#y;
enabledraw #scroll_y, #scroll_x;
if(code==-1)break; //最終行ならbreak
#y=#y+1;
sleep 500; //(0.5秒に変更)
}
[
△
]
RE:41013 秀丸エディターで自動スクロール
No.41019
ひらひら
さん 24/01/12 19:36
希望通りの動きになりました!
ご教授ありがとうございます!m(_ _)m
[
△
]