moveto と movetolineno の実行結果No.03501
白雲斎 さん 02/12/03 18:24
 

白雲斎と申します。

下記のマクロを実行すると、
moveto と movetolineno で実行結果が異なります。

moveto では、< の次にカーソルが移動し、期待する結果となります。
movetolineno では、期待に反して、< の頭にカーソルが移動します。

これは、こう言うものでしょうか?

// test.mac
// < ... ... >
// 【この行にカーソルを置いてマクロ実行】

#lineMode = true; // false;
#cx = x;
#cy = y;
searchup "<";
escape;
moveto selendx, selendy;
#cl = column;
#ln = lineno;
#X  = x;
#Y  = y;
moveto #cx, #cy;
if( #lineMode ) movetolineno #cl, #ln;
else moveto #X, #Y;
endmacro;


----------------
Windows 2000 SP3
IE 6 SP1
秀丸 3.17
----------------

[ ]
RE:03501 moveto と movetolineno の実行No.03502
ひろ さん 02/12/03 19:02
 
 白雲斎さん今日は、ひろです。
> moveto と movetolineno で実行結果が異なります。
 ヘルプに
> moveto X座標,Y座標
>
>  Y座標はファイルの先頭を0として数え,X座標は一番左側の位置を0として数え
> た値です。                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
および
> movetolineno 桁番号,行番号
>
>  桁番号は、タブ文字は1つとして数えた番号です。movetoと違い、桁番号も行番号
> も1から始まります。                                          ^^^^^^^^^^^^^^
> ^^^^^^^^^^^^^^^^^^
更に
> column  カーソルのカラム位置を表します。カラム位置は、論理行頭(直前の改行
>文字の
> 次)から現在のカーソル位置までの文字数を数えた値です。^^^^^^^^^^^^^^^^^^^^
>^^^^^^
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
と有ります。つまり moveto で指定する位置は、x, y の返り値と一致します
が、movetolineno は、lineno と一致しても、column とは一致せず、
column + 1 で指定する必要があります。

[ ]
RE:03502 moveto と movetolineno の実行No.03503
白雲斎 さん 02/12/03 22:07
 
 白雲斎です。

ひろさん、詳しい解説ありがとうございます。
納得しました。

[ ]