getconfig("Tab")の返値についてNo.09761
ohtorii さん 22/03/08 13:22
 
お疲れ様です。

getconfig("Tab")の返値が怪しいので調査をお願いできないでしょうか?

//以下は検証用のコードです。
message getconfig( "Tab" ); //-4がポップアップ表示される(期待通りの値!)
if(0 < getconfig( "Tab" )){
    message "Plus"; //なぜかこの行が実行されます
}else{
    message "! Plus";//正解はこの行
}

上記マクロは”秀丸エディタマクロヘルプ → getconfig( s1 ) 関数”を参照しな
がら書いています。

*秀丸エディタの設定(ファイルタイプ別の設定→体裁→タブ)
    タブ文字数=4
    タブキーで空白入力=On

*秀丸エディタ 64bit 9.12 b11

よろしくお願いいたします。

[ ]
RE:09761 getconfig("Tab")の返値についてNo.09762
ohtorii さん 22/03/08 13:31
 
追記です。

経緯として、
以下マクロが誤動作するため調査していたら、先ほどの投稿の問題に行き着きました。
https://hide.maruo.co.jp/lib/macro/pair_chars_and_smart_indent.html

よろしくお願いいたします。

[ ]
RE:09761 getconfig("Tab")の返値についてNo.09763
こみやんま さん 22/03/08 14:39
 
COMのときに利用するmember関数と同様に、getconfigも
代入文(=)がある時に文字列型か数値型かを決めているのではないでしょうか。

どこまでコンテキスト(前後の文法からそこで求められている型)に対応しているの
か私も個人的に知りたいところですが、
おそらくは代入文のみ(型の自動変換に)対応しているのではないかと思っています。

// getconfig や member は それをcallしただけでは型が決まらず
// コンテキストによって型が決まる。(今のところ代入文が一番決定的)
$str_type = getconfig(...); // 基本的にこちら相当
#int_type = getconfig(...); // 数値型への代入があれば数値型へと変換



[ ]
RE:09763 getconfig("Tab")の返値についてNo.09764
秀丸担当 さん 22/03/08 15:14
 
幾つかのパターンで試してみたところ、確かにおかしい場合がありました。
仕様としてはこみやんまさんの言われる通りなのですが、数値として扱う場合、64bi
t版の整数版のときにおかしかったです。
マイナスではなく大きな正の数になってしまっていました。
現状ではval(getconfig("Tab"))みたいにして回避するしかなさそうです。
今後のバージョンで修正させていただきます。

[ ]
RE:09764 getconfig("Tab")の返値についてNo.09765
ohtorii さん 22/03/08 16:52
 
お疲れ様です

回避方法で何とかしてみます。

>現状ではval(getconfig("Tab"))みたいにして回避するしかなさそうです。

ご確認頂きありがとうございます!

[ ]