マクロでTab判定できないNo.33784
CHERRYVOICE さん 14/12/17 17:00
 
以下のマクロが正しく動作しません。

$str = gettext( x, y, x+1, y );
if( $str == "\t" ){
    message( "Tab" );
}
else{
    message( "not Tab" );
}

Tabのある位置で実行しても、"not Tab"になります。
Ver.8.1?では問題ありませんでしたが、8.42に上げたところ
ダメになりました。

ご確認お願いします。

[ ]
RE:33784 マクロでTab判定できないNo.33785
秀丸担当 さん 14/12/17 17:40
 

バグ情報ありがとうございます。
確かにそうなっていることが確認できました。
V8.3xでの修正でそうなってしまっていました。
今までの動作と違ってしまっているので、次のバージョンで修正させていただき
ます。

起きる原因としては、固定ピッチフォントでは、xとyは見た目上の位置を表して
いて、タブ文字の中間を指しているときの補正で違っていました。
例えばタブ文字が4とした場合、行頭のタブ文字1つでは、
$str = gettext( x, y, x+1, y );
の x+1の位置はタブ文字と次の文字の間にあってV8.3xより前では右側に補正さ
れていたところ、V8.3x以降はうまくいっていませんでした。

現状で回避する方法として、補正無しで正確に位置を指すとしたら、
$str = gettext( x, y, x+4, y );
となりますが、カーソル位置などによって計算がややこしくなります。
簡単には、gettext2を使って、
$str = gettext2( column, lineno, column+1, lineno );
とすると、タブ文字も一文字として数えられるので、補正なしで正確な位置を指
すことができます。
いずれにしてもバグであることには違いないので、修正させていただきます。

[ ]
RE:33785 マクロでTab判定できないNo.33786
CHERRYVOICE さん 14/12/17 17:52
 
>いずれにしてもバグであることには違いないので、修正させていただきます。

よろしくお願いします。

[ ]