カーソルの位置のすぐ左横の文字がタブかNo.09503
styth さん 21/07/24 16:25
 
 カーソルの位置のすぐ左横の文字がタブかどうか知りたいのですが、
 gettext(x,y,x-4,y, 1)
 だと、

aa\tbb

 で、カーソルが\tとbbの間にある時は、うまくいきません。
 タブの文字数は、4に指定しています。
 カーソルを左に移動して、gettextをするしか、ないのでしょうか?

[ ]
RE:09503 カーソルの位置のすぐ左横の文字No.09504
h-tom さん 21/07/24 17:45
 
h-tom です。

> カーソルの位置のすぐ左横の文字がタブかどうか知りたいのですが、
カーソル動かして code みるか、カーソル位置から行頭まで取り込んで、調べればい
いのでは?

> カーソルを左に移動して、gettextをするしか、ないのでしょうか?
gettext2 使えばいいのでは?

[ ]
RE:09504 カーソルの位置のすぐ左横の文字No.09507
秀丸担当 さん 21/07/26 10:28
 

gettextだと見た目上の座標のようになるので、h-tomさんも書かれているようにgett
ext2やカーソル移動してから見るのがいいです。
$a = gettext2( column, lineno, column - 1, lineno, 1 );

でもgettext2の場合は、2バイトの文字の全角の半分とか取得できてしまうので、タ
ブの場合はいいですが、他の文字の場合は期待通りでないことがあると思います。
以前は全角などの考慮が面倒だったのですが、最近のバージョンではマクロヘルプの
「文字の単位」にあるように、各種の単位で扱いやすくなっています。
例えばカーソル移動単位で計算を合わせて以下のようにすると、-1の計算をするだけ
で取得できます。
$a = gettext_cmu( column_cmu, lineno, column_cmu - 1, lineno, 1 );

[ ]