デザインの行の強調表示1〜4の優先順位がNo.40304
fzok4234 さん 23/02/08 11:42
 
こんにちは、Fzok4234 です。


さて、「ファイルタイプ別の設定」の「デザイン」の優先順位についてですが、ダイ
アログ上では
「行の強調表示1〜4」よりも「コメント」の方が優先順位が高くなっているのにもか
かわらず、
実際にはコメント中に「行の強調表示」にマッチする文字列パターンがあるとその行
が「行の強調表示」
として色付けされてしまいます。


再現方法として、まず、拡張子 .test に対応するファイルタイプの設定に以下の te
st.hilight
定義ファイルを適用しておきます。

37,dddd
/<HilightMulti>
/0003,00000003,00,00,00010006,"//",00010006,""

次に、色付けする対象のファイル test.test を開いて、内容を以下のようにします。

0001  // aaaa bbbb
0002  // cccc dddd
0003  // eeee ffff
0004  aaaa bbbb
0005  cccc dddd
0006  eeee ffff

この場合、本来なら 1 〜 3 行目は「コメント」扱いとなって、5 行目のみが「行の
強調表示1」で
色付けされるはずです。

しかし、実際には単語 dddd を含んでいる 2 行目が、前景の文字部分は「コメン
ト」で色付けされたまま
背景が「行の強調表示1」で色付けされてしまいます。設定ダイアログ上では確かに
「コメント」の方が
優先順位が高いため、これを違反して「行の強調表示」で色付けされるのおかしいと
思います。


秀丸エディタは 9.20β5 Float x64 です。



[ ]
RE:40304 デザインの行の強調表示1〜4の優No.40306
秀丸担当 さん 23/02/08 16:27
 
標準の色だとどちらも背景が白か黒だったので、行の強調とコメントの背景を異なる
色にして試してみました。
2行目の行頭からコメントまでは行の強調の背景色で、コメント部分の背景色はコメ
ントの背景色で、改行以降は行の強調の背景色になりました。
改行以降は微妙ですが、一応コメント部分の背景色は優先順位通りになっているよう
に見えました。

もしコメントの背景色の設定を透明に設定されているとしたら、2行目のコメントの
背景色は行の強調の背景色になるので、そのように設定されているのかもしれないで
す。

[ ]
RE:40306 デザインの行の強調表示1〜4の優No.40307
fzok4234 さん 23/02/08 18:20
 
> もしコメントの背景色の設定を透明に設定されているとしたら、2行目のコメント
>の背景色は行の強調の
> 背景色になるので、そのように設定されているのかもしれないです。

確かに、「デザイン」の「場所の一覧」の所で、「コメント」の背景色は透明にして
ありました。このときは
行全体が色付けされます。「コメント」の背景色を透明でない適当な色に設定すると、
おっしゃる通り
コメントの前後の部分だけが「行の強調表示1」の背景色になります。

ただ、いずれの場合でもアウトライン解析のツリー表示の項目で「見出しの定義」を
「行の強調表示1」に
していると、たとえ「コメントを無視」にチェックが入っていても 2 行目の

0002  // cccc dddd

という項目がアウトライン枠に追加されてしまいます。

このため実際の運用において、クラスや関数などの先頭行を「行の強調表示」で色付
けの上でこれを
「見出しの定義」にしていると、実質任意の文字列からなるコメント部分にたまたま
クラスや関数の定義と
同じパターンの語句があるだけで、本来ならクラスや関数の名前のみがアウトライン
枠に載るべきところが、
このコメントまでアウトライン枠に追加されてしまうという問題が頻発しております。

当然この問題の回避のためには、もし対象のファイルフォーマットに対応した LSP
サーバーが存在しなければ
そのフォーマットに準拠した構文解析器を自作してカラーマーカーで色付けするとい
う手間のかかる対処が
必要となります。



[ ]
RE:40307 デザインの行の強調表示1〜4の優No.40309
秀丸担当 さん 23/02/09 10:58
 
行の強調をアウトライン解析に入れつつ、見出しの定義でコメントを無視という使い
方は確かにそうなりました。
行の強調としては有効なので、すみませんがそういう仕様ということになってしまい
ます。
代わりに特に強調を使うとかしたいところですが、特に強調はコメントより優先順位
が高いので、コメントの無視にはできないです。
優先順位を自由に調整できたらいいかもしれないです。
でも見出しのためだけに実際は強調されない定義をするのであれば、見出しの定義を
強調ではなく、文字列として定義すればいいということになると思います。

あと試して別の問題に気付いてしまったのですが、以前からcolormarkerの強調とし
ての指定で、0x40060000の行の強調3だけ効いていませんでした。
効いていないというか、行の強調3の一部がコメント色に見えてしまうようになって
いました。
行の強調1,2,4は良くて3だけだめでした。
他にV9.20βでは、colormarkerのJSON指定でcolorcodeの文字列による指定がうまく
いっていない問題もありました。
これらはまた修正致します。

[ ]