マクロでカーソルがおかしな位置にNo.06378
lethalflag さん 11/01/27 01:05
 
お疲れ様です。

・エディタ的に数えた場合、行の途中である
・ワープロ的に数えた場合、行の先頭である
(つまり、1行がとても長く、折り返し文字数を超えて折り返した直後)
以上の両条件を満たしている座標へ moveto2 column, lineno; で移動した場合、
「ワープロ的に数えた前行の、最後の文字の右」に移動してしまいます。

この状態での column, lineno 自体は正しい値を示しますが、code の値は 0 となり
ます。

次に、right; や、カーソルキー右で移動しようとすると、
「最初に想定していた座標」に移動します。

この状態での column, lineno は、「right実行前と同じ値」を示します。

    // 最初に示した条件でこのマクロを実行
    moveto2 column, lineno;  // 本来なら動かないはずだが、おかしな位置に移動
する
    message str(column) + " " + str(lineno) + " / " + str(code);
   
    right; // 右に移動しても、column, linenoに変化がない
    message str(column) + " " + str(lineno) + " / " + str(code);

もちろん、movetolineno column+1, lineno; でも同様です。


Ver8.03β10
Windows Xp SP3
#Ver8.02も再現しました

[ ]
RE:06378 マクロでカーソルがおかしな位置No.06379
秀丸担当 さん 11/01/27 10:16
 

>・エディタ的に数えた場合、行の途中である
>・ワープロ的に数えた場合、行の先頭である
>(つまり、1行がとても長く、折り返し文字数を超えて折り返した直後)
>以上の両条件を満たしている座標へ moveto2 column, lineno; で移動した場合、
>「ワープロ的に数えた前行の、最後の文字の右」に移動してしまいます。

報告ありがとうございます。
マクロの通りにしてみて再現させることができました。
確かにおかしかったです。
V8.03の次のβ版で修正させていただきます。

[ ]