[ 新規に投稿する ]

.hilightファイルから300字程の複数行コメントの読み込みでエラNo.39939
fzok4234 さん 22/08/04 17:31 [ コメントを投稿する ]
  こんばんは、fzok4234 です。


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

/<HilightMulti>
/0014,14020002,00,00,00010003,"(?#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)aaaaaaaaaaaaaaa",00010003,"(?#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)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:begin)\\g<s1>(?i:signature)\\g<s1>(?i:block)\\g<s>$",00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)^\\g<s>\\g<lineCommentChar>\\g<s>(?i:sig)\\g<s>\\g<lineCommentChar>\\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<blockCommentBeginChar>[#]",00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)[#]\\g<blockCommentEndChar>"
//      行コメント。
/0003,00000003,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)\\g<lineCommentChar>",00000002,""
//  式リテラル。
//      文字列。
//          逐語的ヒア文字列。
/0014,14020002,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?#psboundary)\\g<valuePre>\\K\\g<hereVerbatimBegin>",00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?#psboundary)\\g<hereVerbatimEnd>(?=\\g<valuePost>)"
//          展開ヒア文字列。
/0014,14070002,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?#psboundary)\\g<valuePre>\\K\\g<hereStringBegin>",00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?#psboundary)\\g<hereStringEnd>(?=\\g<valuePost>)"
//          空の逐語的文字列。
/0014,00000004,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?#psboundary)\\g<valuePre>\\K\\g<verbatimBegin>\\g<emptyVerbatimEnd>(?=\\g<valuePost>)",00000002,""
//          逐語的文字列。
/0014,14020002,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?#psboundary)\\g<valuePre>\\K\\g<verbatimBegin>",00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?#psboundary)\\g<verbatimEnd>(?=\\g<valuePost>)"
//          単行の展開文字列。
/0014,00000004,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?#psboundary)\\g<valuePre>\\K\\g<lineString>(?=\\g<valuePost>)",00000002,""
//          複数行の展開文字列。
/0014,14070002,00,60,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?#psboundary)\\g<valuePre>\\K\\g<stringBegin>",00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#psstring)(?#pstypename)(?#psattribute)(?#psmembername)(?#pslabel)(?#pstoken)(?#psboundary)\\g<blockStringEnd>(?=\\g<valuePost>)"
//      数値。
/0025,00000004,00,00,00010003,"(?#hmonig)(?#lookbehind)(?u)(?#pslexeme)(?#pskeyword)(?#pssymbol)(?#psvar)(?#psgenerictoken)(?#psparam)(?#psnumeric)(?#psstring)(?#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 文字に修正してもらえれば
ありがたいです。


[ ]

[ 新規に投稿する ]