(強調表示) 「行の強調表示1」に関してNo.14439
Ken さん 03/04/09 11:38
 
C/C++言語のソースファイルの強調に関する質問です。

ファイル別の設定
「表示」タブで「コメント文字列定数のカラー表示」をチェックし
モードを「C言語/JAVA」にしました。
また、「強調表示」タブで、次の項目を追加しました。
+-----強調表示の項目
|文字列=TODO
|大文字小文字の区別=ON
|単語の検索=ON
|表示方法=行の強調1
+-----

以上の設定において、次のソースコードを表示すると意図する
カラー表示とは異なります。

+----サンプルソース---
|  // TODO
+----

このソースは、コメント行として扱われ、コメント色になります。
期待した動作は、行の強調1のカラーで表示してくれることです。

ちなみに、以下の設定を行うと「特に強調1」のカラーで表示されます。
+-----強調表示の項目
|文字列=TODO
|大文字小文字の区別=ON
|単語の検索=ON
|表示方法=特に強調1
+-----

なお、ファイル別の設定のカラータブでは、行の強調表示、特に強調表示共に、コメ
ントより優先順位が高くなっています。

以上、よろしくお願い致します。

[ ]
RE:14439 (強調表示) 「行の強調表示1」No.14440
ひろ さん 03/04/09 12:11
 
 秀丸担当さん、Ken さん今日は、ひろです。
> +-----強調表示の項目
> |文字列=TODO
> |大文字小文字の区別=ON
> |単語の検索=ON
> |表示方法=行の強調1
> +-----
>
> 以上の設定において、次のソースコードを表示すると意図する
> カラー表示とは異なります。
>
> +----サンプルソース---
> |  // TODO
> +----
>
> このソースは、コメント行として扱われ、コメント色になります。
> 期待した動作は、行の強調1のカラーで表示してくれることです。
 これは多分無理です。
 おそらく
> なお、ファイル別の設定のカラータブでは、行の強調表示、特に強調表示共に、コメ
> ントより優先順位が高くなっています。
この表示が間違っていて、優先度の関係は、
行の強調表示1<コメント<ホームページURL
です。(後術するがここには実際は、ちょっと違う)

 以下秀丸担当さんへ
 またこれ以外にも、ここの表示と優先度が食い違っている物が多くあります。
例えば、
(1)「強調」は数字の小さい方が順位が高い
    これは他の「行の強調」「特に強調」も同じ
(2)URL はファイル名やメールアドレスより順位が高い
(3)「HTML タグ全体」は他の HTML 関係より順位が低い
(4)文字列定数は HTML 関係より順位が高い
(5)メールアドレスは行の強調表示より順位が低い
等です。どういった仕様がよいかは、ちょっと解りませんが、ダイアログでの
表示でウィンドウでの表示を一致させて頂ければ幸いです。

[ ]
RE:14440 (強調表示) 「行の強調表示1」No.14442
Ken さん 03/04/09 14:19
 
> 秀丸担当さん、Ken さん今日は、ひろです。
  こんにちわ
  回答ありがとうございます。

>> このソースは、コメント行として扱われ、コメント色になります。
>> 期待した動作は、行の強調1のカラーで表示してくれることです。
> これは多分無理です。
> おそらく
>> なお、ファイル別の設定のカラータブでは、行の強調表示、特に強調表示共に、コメ
>> ントより優先順位が高くなっています。
>この表示が間違っていて、優先度の関係は、
>行の強調表示1<コメント<ホームページURL
>です。(後術するがここには実際は、ちょっと違う)

 今回の不具合は、メッセージと処理が一致していない事である。
 本来の仕様は処理であり、メッセージが間違っている。
 その為、今後の修正でメッセージが変わる。
 以上のことで納得しておきます。
 (納得したくないと言えばしたくないのですが、仕様ですから)

 ということで、今後の要望の一つとして挙げておきます。
 上記の優先順位をユーザがカスタマイズできるようにしていただけると嬉しいです。
 (もしかすると、カラー化リニューアルでかなりの項目がカスタマイズできるように
なるのかもしれませんが)

[ ]
RE:14442 (強調表示) 「行の強調表示1」No.14445
アルビレオ さん 03/04/09 19:30
 
アルビレオです。

現状での回避策ですが、「特に強調1/2」を他の強調表示に使ってないのであれ
ば、「特に強調」のカラー設定を「行の強調」と同じになるようにして

|文字列=^.*//.*[^0-9A-Za-z]TODO[^0-9A-Za-z].*$
|大文字小文字の区別=ON
|単語の検索=OFF
|正規表現=ON
|表示方法=特に強調1

とする手があります。
ただしこれだと'TODO'の直後に改行がある場合や'//TODO ...'のような場合に
ヒットしません。
それぞれ
|文字列=^.*//.*[^0-9A-Za-z]TODO$
|文字列=^.*//TODO[^0-9A-Za-z].*$
を追加してやればいいんですが、そういうパターンがないことがわかっているな
ら必要ないでしょう。

副作用として
|a = "//"; b = "TODO";
のような文字列にもマッチしてしまいますが。

「コメント/文字定数」の優先順位が高く設定されているのはこういう事態を防
ぐためなわけです。
コメントや文字定数の中身をキーワードとして認識してしまうと、予想外のパ
ターンでもマッチしてしまう可能性が高いことは理解と覚悟をしておいた方がい
いでしょう。

[ ]
RE:14442 (強調表示) 「行の強調表示1」No.14447
秀丸担当 さん 03/04/09 19:37
 
> 以下秀丸担当さんへ
> またこれ以外にも、ここの表示と優先度が食い違っている物が多くあります。

どうやらそのようです。
修正します。

>&nbsp;ということで、今後の要望の一つとして挙げておきます。
>&nbsp;上記の優先順位をユーザがカスタマイズできるようにしていただけると嬉し
>いです。

優先順位カスタマイズは、ちょっとむずかしいかもしれないです。

[ ]
RE:14447 (強調表示) 「行の強調表示1」No.14450
ひろ さん 03/04/10 00:11
 
 秀丸担当さん今日は、ひろです。
> > またこれ以外にも、ここの表示と優先度が食い違っている物が多くあります。
>
> どうやらそのようです。
> 修正します。
 宜しくお願いします。

[ ]