カーソルごと画面移動マクロNo.07187
でがらし さん 13/02/22 22:19
 
 画面に表示する論理行の位置をカーソルごと移動するマクロに関するお尋ね
です。

 長い文章を編集しているとき、カーソルが画面の下へ行くことがあります。
編集が続けづらいので、カーソルごと、カーソル行を画面上部に移動したいで
す。

 下記の図で説明します。左側の数字が論理行の順番を示します。移動前は
カーソル行(第42行)が画面の最下部にあり、移動後はカーソル行(第42
行)が画面の最上部にあります。この移動後の状態に画面を移動するマクロ
(あるいはこれに近いことができるマクロ)ができるでしょうか? マクロの
ヘルプを読んでみましたが、ぴったりする機能を探し当てることができません
でした。

移動前---------------------------------
30
31
32
 中略
41
42 カーソル位置
---------------------------------------

移動後---------------------------------
42 カーソル位置
43
 中略
51
52
53
---------------------------------------

[ ]
RE:07187 カーソルごと画面移動マクロNo.07188
h-tom さん 13/02/23 00:59
 

h-tom です。

>(あるいはこれに近いことができるマクロ)ができるでしょうか? マクロの
>ヘルプを読んでみましたが、ぴったりする機能を探し当てることができません
>でした。
スクロールアップ/スクロールダウンかな?

[ ]
RE:07188 カーソルごと画面移動マクロNo.07190
秀丸担当 さん 13/02/25 09:23
 

マクロでスクロール位置を調整することに関連するものとしては、以下のような
ものが考えられると思います

 rollup
 rolldown
 screentopy
 y
 windowheight
 disabledraw後のenabledraw

screentopyやrolldownなどによって計算する方法もあると思いますが、
disabledraw後のenabledrawが一番簡単です。
enabledrawは描画を復活させると同時にスクロール位置を決めることができます。
例えば画面の中央にもってくるには以下のようにするといいです。

 disabledraw;
 enabledraw y - windowheight / 2;


あと、マクロではないですが、関連する設定もあります。
[その他]→[動作環境]→[検索]の「カーソル位置」で、検索でヒットしたときの
スクロール状態を決めることができます。

[その他]→[動作環境]の左下の上級者向け設定をONにして、
[その他]→[動作環境]→[表示/操作]→[カーソル操作]の「カーソルでスクロー
ルする開始位置」を大きくなるように指定しておくと、常に画面の端には行かな
いようにカスタマイズすることもできます。

[ ]
RE:07188 カーソルごと画面移動マクロNo.07191
でがらし さん 13/02/25 12:33
 
  出張でレスが遅くなりました。

 スクロールアップ/スクロールダウンは探し当てたんですが、カーソルの位置が当
初の行から変わっちゃうので、それを維持する方法がないものかと考えていました。
説明からその部分を落としていました。恐縮です。

 コメント、ありがとうございました。


[ ]
RE:07190 カーソルごと画面移動マクロNo.07192
でがらし さん 13/02/25 12:36
 
 ご教授の方法を試してみます。カーソルは画面上部に位置させたほうが便利なので、
そうすることができるかどうか、考えます。ありがとうございました。

[ ]
RE:07192 カーソルごと画面移動マクロNo.07193
山紫水明 さん 13/02/25 14:21
 
 でがらしさん,

 次のようなのはいかがでしょう。
//--------------------------------------
#y = y;
while( screentopy < #y ) {
    rollup;
    if( !result ) break;
}
endmacro;
//--------------------------------------

                          山紫水明
                          SANSHISUIMEI

[ ]
RE:07193 カーソルごと画面移動マクロNo.07194
でがらし さん 13/02/25 19:31
 
 頂戴しました。当初に期待した通りの動きをします。いつもいつものご親切、あり
がとうございました。

[ ]
RE:07190 カーソルごと画面移動マクロNo.07195
でがらし さん 13/02/25 19:56
 
1.ご教授いただいた下記のマクロを参考に、変数を変えて試してみました。今回の
用は足りていますが、下記のマクロの2行目、「enabledraw y - windowheight /
2;」の中の「/ 2」の意味がわかりません。「1/2]という意味でしょうか?

---------------------------------------
 disabledraw;
 enabledraw y - windowheight / 2;
---------------------------------------

 実は、マクロでの引数の与え方やマクロ経由で起動する他のプログラムへの引数の
与え方がよくわからないので、一度、ここに質問の投稿をしようと思っていました。
これは別立てにすることにします。

2.[その他]→[動作環境]→[表示/操作]→[カーソル操作]の部分ですが、私の秀丸
(8.21)では、[カーソル操作]という項目が出てきません。どこか、別のところ
にあるでしょうか?

[ ]
RE:07188 カーソルごと画面移動マクロNo.07196
でがらし さん 13/02/25 19:58
 
 先ほどのレスは急いで書き込んだので、ごあいさつを申し上げるのを忘れていまし
た。秀丸を使い始めてから、いろいろなサイトで秀丸利用法とマクロを探しましたが、
h-tomさんのサイトをその当初に発見し、勉強させていただきました。また、いくつ
かのマクロを頂戴しました。現在もときどきのぞきにうかがっています。とても助け
になっています。改めてごあいさつとお礼を申し上げます。ありがとうございました。

[ ]
RE:07195 カーソルごと画面移動マクロNo.07197
山紫水明 さん 13/02/25 21:01
 
 でがらしさん,

>下記のマクロの2行目、「enabledraw y - windowheight / 2;」の中の「/ 2」
>の意味がわかりません。「1/2]という意味でしょうか?

 そういうことです。カーソル位置の行数からウィンドウの高さの半分を引いた
行を画面の一番上に持って来るということ,したがってカーソル行が画面の中央
にきます。

 disabledraw;
 enabledraw y;

こうすると,カーソル行が画面の一番上に行きますから,私のマクロよりもこち
らの方が簡明でしょう。

2.[その他]→[動作環境]→[表示/操作]→[カーソル操作]の部分ですが、私の
秀丸
(8.21)では、[カーソル操作]という項目が出てきません。どこか、別のと
ころにあるでしょうか?

「上級者向け設定」にチェックします。

                          山紫水明
                          SANSHISUIMEI

[ ]
RE:07197 カーソルごと画面移動マクロNo.07198
でがらし さん 13/02/25 23:01
 
1.最初の質問、了解です。ありがとうございました。「/ 2」が1/2を意味するとい
う情報をなかなか探し当てることができませんでした。

2.2つ目の質問、書きそびれました。「上級者向け設定」にチェックしていますが、
それでも出てきません。ヘルプのバージョンのせいかと思ったんですが。

[ ]
RE:07197 「カーソル操作」発見No.07199
でがらし さん 13/02/25 23:12
 
 「カーソル操作」を発見しました。+をクリックして展開するのを失念していまし
た。お騒がせしました。何度もありがとうございました。


[ ]