[ 新規に投稿する ]

hilightファイルでの強調表示文字列の文字数制限No.42086
ANACOSTIA さん 25/07/24 16:18 [ コメントを投稿する ]
   強調表示の定義をhilightファイルで行っています。
 ヘルプには、「強調表示の文字列の長さは、(中略)V8.90からは3999文字までの制限があります。」とあるのですが、実際にはもっと少ない文字数で認識されなくなるようです。
 UTF-16において、2バイト文字相当で3999文字であり、4バイト文字が混ざるとその分だけ利用可能な文字数が減るということなのでしょうか?
[ ]
RE:42086 hilightファイルでの強調表示文字列の文字数制限No.42087
秀丸担当 さん 25/07/25 09:26 [ コメントを投稿する ]
  強調表示の定義の上限の文字数は、基本的に半角文字数単位で、半角1文字、全角2文字相当でした。
より正確には、内部的な構造の都合もあって、Unicode独自文字は4文字相当でした。
このあたりもヘルプに書いておきます。
あと確かめていたら幾つか問題を見つけてしまったので、また修正していきます。
[ ]
RE:42087 hilightファイルでの強調表示文字列の文字数制限No.42088
ANACOSTIA さん 25/07/25 17:19 [ コメントを投稿する ]
   Shift-JISにある文字は1バイト又は2バイトで、無い文字は(UTF-16の2バイト文字も?)4バイトで換算した3999バイト相当が制限であると理解しました。
[ ]
RE:42087 hilightファイルでの強調表示文字列の文字数制限No.42154
Fzok4234 さん 25/08/22 07:54 [ コメントを投稿する ]
  横から失礼いたします。Fzok4234 です。


> 強調表示の定義の上限の文字数は、基本的に半角文字数単位で、半角1文字、全角2文字相当でした。
> より正確には、内部的な構造の都合もあって、Unicode独自文字は4文字相当でした。

とのことですが、.hilight ファイルをマクロで自動生成させる場合などで、強調表示の文字数が正しいか
どうかをマクロ上でバリデーションするにはどうしたらよいのでしょうか ?

具体的には、
 1. 半角 1 文字、Shift-JIS 2 文字、Unicode 4 文字としての文字数の取得を、1 文字ずつの文字種の
    判定を行わずに strlen() 系関数のように一発で行う方法。
 2. 文字数の最大値、すなわち例えば現行バージョンでの 3999 文字という数値を取得する方法。
が分からず困っています。

問題解決のためのマクロの記述方法のご教示をよろしくお願いします。また、提示したマクロのサンプルの
記述量があまりにも多くなる場合には、これらの値の取得を行う新しい関数やキーワードの追加の検討を
よろしくお願い申し上げます。


[ ]
RE:42154 hilightファイルでの強調表示文字列の文字数制限No.42160
秀丸担当 さん 25/08/22 11:36 [ コメントを投稿する ]
  hilightファイルで1つの定義が長すぎるかどうかを知る方法は基本的には無いです。
一応、文字の単位の、秀丸単位(座標)のプロポーショナルフォント相当なので、hilightファイルを開いた状態でフォントを変えてxで計ることはできますが、正規の方法ではないと思ってもらったほうがいいです。

方法は無いので、充分な余裕を持って書くことを推奨とヘルプに書いておこうと思います。
知る方法もできたらいいということで、参考にさせていただきます。
[ ]
RE:42160 hilightファイルでの強調表示文字列の文字数制限No.42174
Fzok4234 さん 25/08/25 09:19 [ コメントを投稿する ]
  回答ありがとうございます。

> 一応、文字の単位の、秀丸単位(座標)のプロポーショナルフォント相当なので、hilightファイルを開いた
> 状態でフォントを変えてxで計ることはできますが、正規の方法ではないと思ってもらったほうがいいです。

マクロヘルプを改めて確認したら、秀丸単位(座標)に対応した strlen() 系関数が存在せず抜け落ちている
状態でしたね。新たに関数を追加するとしたら、固定ピッチフォント用は xylen() 、プロポーショナルフォント用は
xyplen() という感じの名前が良いのではと思います。

------------------------------------------------------------------------------------------------

そもそも、強調表示と複数行コメントで、秀丸単位(座標)のプロポーショナルフォント相当の Byte 数割り当てで
文字数制限を行う理由は、レジストリへの保存の形式で旧バージョンとの互換性を保つことであるので、
.hilight ファイルに Unicode 文字を含むことが許可されているケースである「hilightファイル直接指定モード」では、
文字数制限は何の意味も持たないはずです。

このため、「hilightファイル直接指定モード」では文字数を無制限にするか、または現行の強調表示の 3999 文字や
複数行コメントの 249 文字を大幅に上回る文字数制限を適用することを検討したほうが良いのではないでしょうか。


[ ]
RE:42174 hilightファイルでの強調表示文字列の文字数制限No.42180
秀丸担当 さん 25/08/25 16:13 [ コメントを投稿する ]
  ご意見ありがとうございます。
参考にさせていただきます。
[ ]

[ 新規に投稿する ]