マクロヘルプ:「エディタ的な行番号」No.09899
でるもんたいいじま さん 22/07/10 21:01
 
でるもんた・いいじまです。

今日、マクロを書いていて gettext2() を初めて使ったのですが、大々的にワナにハ
マりました。

☆ ☆ ☆

で、よくよく情報を確認したらマクロヘルプのサンプルコードに誤りがありました。

070_Function_gettext2.html
> c1, l1は開始位置で、c2, l2は終了位置を指定します。
> 数え方はmoveto2と同じです。
>
> 例
> $a = gettext2( 0, 0, 10, 10 );
> message $a;

このサンプルコードの第二パラメータは0ではなく1で、

$a = gettext2( 0, 1, 10, 10 );
message $a;

となるのではないでしょうか。「エディタ的な行番号」は1から始まります。

このページに限らず、行位置・桁位置を指定する各コマンド・各関数のページでは、
できればどのページにも「左端が0です」「最初の行が1です」といった情報をさりげ
なく書いておいていただけると嬉しいです。

☆ ☆ ☆

(以下オマケ)

手元で何をしていたかというと、上記の「第二パラメータは0」を信じて

$title = gettext2(0, 0, linelen2[0], 0);
$date  = gettext2(0, 2, linelen2[2], 2);

と書いていました。これは正しくは

$title = gettext2(0, 1, linelen2[0], 1);
$date  = gettext2(0, 3, linelen2[2], 3);

となります。

0-origin と 1-origin が混在していてややこしいですが、いまさら仕様変更するわ
けにもいかないのが悩ましいですね。

[ ]
RE:09899 マクロヘルプ:「エディタ的な行No.09900
秀丸担当 さん 22/07/11 13:16
 
ご指摘ありがとうございます。
gettext2()のサンプルは確かに適切ではありませんでした。
1からということがわかりやすいように直しておきます。
各所にも行番号が1からと書いたほうがよさそうなところにも書いておきます。

昔はmovetolinenoが桁位置は1つずれていたのを、moveto2の追加で桁位置は0から、
行番号は1からで統一できるようにしていたのですが、最近追加していたlinelen2の
[]表記の場合は0からで、ここも混乱がありました。
そのあたりも注意書きとして書いておきます。

[ ]