.hilightファイルから300字程の複数行コメNo.39939
fzok4234 さん 22/08/04 17:31
 
こんばんは、fzok4234 です。


さて、複数行コメントの強調を定義したファイルで以下のように検索文字数を少しだ
け長くしたものがエラーで
読み込めない不具合がありました。

/<HilightMulti>
/0014,14020002,00,00,00010003,"(?#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)aaaaaaaaa
aaaaaa",00010003,"(?#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)aaaaaaaaaaaaaaaa"

これは開始文字列と終了文字列が共に制限値の 3999 文字より遥かに少ない 300 文
字程度のものです。これを、
「ファイルタイプ別の設定」=>「デザイン」=>「保存/読込」で読み込もうとすると、

---------------------------
エラー
---------------------------
C:\Users\********\Desktop\test.hilight - ファイルの中身が正しい形式になって
いません
---------------------------
OK  
---------------------------

というエラーで読み込むことができません。


秀丸エディタは 9.18β3 Float x64 です。



[ ]
RE:39939 .hilightファイルから300字程のNo.39943
秀丸担当 さん 22/08/05 10:02
 
ご指摘ありがとうございます。
調べてみたところ、強調表示のほうは何度か上限を増やしていましたが、複数行コメ
ントのユーザー定義は初期のころから半角換算で249文字までで増やしたことはあり
ませんでした。
hilightファイルの読み込みはエラーになるよでよかったですが、本体の実際の反映
で超えるとまずい部分があったので、まずは対策して修正して、ヘルプにも書いてお
きます。
そのうえで、今後増やすことがある場合hilightファイル直接指定モードでできたら
いいです。

[ ]
RE:39943 .hilightファイルから300字程のNo.39945
fzok4234 さん 22/08/05 10:26
 
> hilightファイルの読み込みはエラーになるよでよかったですが、本体の実際の反
>映で超えるとまずい部分が
> あったので、まずは対策して修正して、ヘルプにも書いておきます。
> そのうえで、今後増やすことがある場合hilightファイル直接指定モードでできた
>らいいです。

当方で実際に本番運用するはずであった .hilight ファイルの「複数行コメント」の
内容は以下の通りです。

/<HilightMulti>
//  コメント類。
//      デジタル署名。
/001A,00020002,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)^\\g<
s>\\g<lineCommentChar>\\g<s>(?i:sig)\\g<s>\\g<lineCommentChar>\\g<s>(?i:begi
n)\\g<s1>(?i:signature)\\g<s1>(?i:block)\\g<s>$",00010003,"(?#hmonig)(?#look
behind)(?u)(?#pslexeme)^\\g<s>\\g<lineCommentChar>\\g<s>(?i:sig)\\g<s>\\g<li
neCommentChar>\\g<s>(?i:end)\\g<s1>(?i:signature)\\g<s1>(?i:block)\\g<s>$"
//      実行条件。
/001A,00000003,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)^\\g<
s>\\g<lineCommentChar>\\g<s>(?i:requires)\\g<s1>.++",00000002,""
//      ブロックコメント。
/0003,00020002,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)\\g<b
lockCommentBeginChar>[#]",00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)
[#]\\g<blockCommentEndChar>"
//      行コメント。
/0003,00000003,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)\\g<l
ineCommentChar>",00000002,""
//  式リテラル。
//      文字列。
//          逐語的ヒア文字列。
/0014,14020002,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#ps
keyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#ps
string)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?
#psboundary)\\g<valuePre>\\K\\g<hereVerbatimBegin>",00010003,"(?#hmonig)(?#l
ookbehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoke
n)(?#psparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmemb
ername)(?#pslabel)(?#pstoken)(?#psboundary)\\g<hereVerbatimEnd>(?=\\g<valueP
ost>)"
//          展開ヒア文字列。
/0014,14070002,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#ps
keyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#ps
string)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?
#psboundary)\\g<valuePre>\\K\\g<hereStringBegin>",00010003,"(?#hmonig)(?#loo
kbehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)
(?#psparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmember
name)(?#pslabel)(?#pstoken)(?#psboundary)\\g<hereStringEnd>(?=\\g<valuePost>)"
//          空の逐語的文字列。
/0014,00000004,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#ps
keyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#ps
string)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?
#psboundary)\\g<valuePre>\\K\\g<verbatimBegin>\\g<emptyVerbatimEnd>(?=\\g<va
luePost>)",00000002,""
//          逐語的文字列。
/0014,14020002,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#ps
keyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#ps
string)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?
#psboundary)\\g<valuePre>\\K\\g<verbatimBegin>",00010003,"(?#hmonig)(?#lookb
ehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?
#psparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmemberna
me)(?#pslabel)(?#pstoken)(?#psboundary)\\g<verbatimEnd>(?=\\g<valuePost>)"
//          単行の展開文字列。
/0014,00000004,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#ps
keyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#ps
string)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?
#psboundary)\\g<valuePre>\\K\\g<lineString>(?=\\g<valuePost>)",00000002,""
//          複数行の展開文字列。
/0014,14070002,00,60,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#ps
keyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#ps
string)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?
#psboundary)\\g<valuePre>\\K\\g<stringBegin>",00010003,"(?#hmonig)(?#lookbeh
ind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#p
sparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmembernam
e)(?#pslabel)(?#pstoken)(?#psboundary)\\g<blockStringEnd>(?=\\g<valuePost>)"
//      数値。
/0025,00000004,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#ps
keyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#ps
string)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?
#psboundary)\\g<valuePre>\\K\\g<numeric>(?=\\g<valuePost>)",00000002,""

使用する正規表現 DLL は HmJreSelect.dll から hmonig.dll を呼び出しており、上
記の (?#ps******) は全て
.HmJreSelect ファイルで定義した比較的長い正規表現パターンです。

当然、制限文字数が 3999 文字であることを前提にしたもので、これを今更 249 文
字に短縮するのは困難であるため、
今すぐ運用したい .hilight ファイルであるためできる限り早く制限文字数を 3999
文字に修正してもらえれば
ありがたいです。



[ ]