[ 新規に投稿する ]

カーソルの位置のすぐ左横の文字がタブかどうか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さんも書かれているようにgettext2やカーソル移動してから見るのがいいです。
$a = gettext2( column, lineno, column - 1, lineno, 1 );

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

[ 新規に投稿する ]