秀丸エディターで自動スクロールしてくれ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

[ ]