通常の強調表示の表示方法を全て揃えてほNo.39931
fzok4234 さん 22/08/02 09:35
 
毎度お世話になっております。


さて、数値や文字定数などの強調を「複数行コメント」ではなく通常の「強調表示」
で定義したいのですが、
該当の表示方法が通常の「強調表示」に無いためうまくできず困っています。

表示方法の
 ・普通の文字
 ・スクリプト部分
 ・数値
 ・文字定数
 ・コメント
 ・#ifdef等での無効部分
の 6 種類が「複数行コメント」には存在するのですが、「強調表示」には存在しま
せん。この 6 種類を
「強調表示」にもちゃんと揃えてもらえれば大変助かります。

なぜなら、「複数行コメント」と「強調表示」とでは強調の部分が重なった場合での
挙動が大きく異なる
からです。「複数行コメント」では後から重ねた方の定義が一切適用されませんが、
「強調表示」では
表示方法の優先順位に応じて重なり部分が上塗りされます。

特にこれが問題となるのは、上記の 6 種類の表示方法での強調を hmonig.dll など
の 鬼車 系正規表現で
前方一致の \K を用いて定義する場合です。例えば、文字定数の定義の前方参照部分
が数値での強調の部分と
重なったときに、この文字定数の強調が動作しなかったりします。この現象は「複数
行コメント」の挙動による
ものですが、これを避けるために「強調表示」で定義しようにも表示方法に数値と文
字列が無いために
どうしようもなくなって詰んでしまいます。

また、この問題を避けるためにマクロからカラーマーカーを使用することも試みたこ
とがありますが、強調定義と
比べて動作が非常に重くなったため導入を断念した経緯があります。

このように「強調表示」に上記の 6 種類の表示方法が揃っていないことで今まで言
語の強調の定義に大変
苦労させられてきました。この 6 種類の表示方法を正式に「強調表示」に加えるこ
とのご検討を、どうかよろしく
お願い申し上げます。



[ ]
RE:39931 通常の強調表示の表示方法を全てNo.39932
秀丸担当 さん 22/08/02 18:07
 
以前にも同じ話があったと思いますが、そういうご要望があることは承知しています。
一般的な話としてですが、強調表示の種類が足らないという話は前からあるのですが、
設定の関係上難しい面があったところ、hilightファイル直接指定モードであれば、
定義ごとに直接色を指定できたり可能にしてもいいかもしれません。

[ ]
RE:39932 通常の強調表示の表示方法を全てNo.39933
fzok4234 さん 22/08/03 08:17
 
回答ありがとうございます。


> 以前にも同じ話があったと思いますが、そういうご要望があることは承知していま
>す。

一応今までの経緯を話すと、以前当フォーラムでこの「複数行コメント」の重なり問
題を挙げたところ、マクロからの
カラーマーカー呼び出しの提案を授かったため、構文の入れ子構造への対応も兼ねて
試しに C# 用のカラーマーカーを
設定するマクロを組んでみました。これは、構文木ノードの情報をスタック配列に出
し入れするループを回す方法で
深さ優先探索を行って入れ子構造に対応させるものでした。

しかし、肝心の動作速度は 100 行程度の C# のソースへの強調が完了するのに 10
数秒もかかるという非常に
重い動作であって、全く実用には堪えないものでした。

このため、結局標準の「強調表示」と「複数行コメント」の使用がパフォーマンス上
最も優れているという結論に
至っています。しかしこれでは件の「複数行コメント」の重なりの衝突問題が再発す
ることとなるため、「強調表示」の
種類の数を「複数行コメント」や colormarker 文で扱っているものと同じにするこ
とで根本的な問題解決を行うことを
改めて要望させて頂いた次第であります。


> 一般的な話としてですが、強調表示の種類が足らないという話は前からあるのです
>が、

確かに、
 ・普通の強調 8 種類
 ・行の強調 4 種類
 ・特に強調 4 種類
では少し窮屈な気がします。言語によっては要素のジャンルが多くて割り当てが「普
通の強調」 8 種類に収まり
切れず、止む無く「特に強調」に割り当てることが当方でもよく起きています。

種類を現状の 2 倍程度に増やしたほうが快適に要素の割り当てができてよいのでは
ないかと思います。


> 設定の関係上難しい面があったところ、hilightファイル直接指定モードであれば、
>定義ごとに直接色を指定できたり
> 可能にしてもいいかもしれません。

現状では設定のレジストリの書式が互換性の維持のために簡単に変更できないため、
機能の拡張の大きな足枷になって
いることは重々承知しております。

だとすれば、機能拡張に伴う設定の拡張に対応させるため、hilight ファイルなどの
外部ファイルに設定を保存する
ことは妥当な対応といえます。

普通の「強調表示」への
 ・普通の文字
 ・スクリプト部分
 ・数値
 ・文字定数
 ・コメント
 ・#ifdef等での無効部分
の追加を行う場合は、是非この hilight ファイル直接指定モードでの対応でよろし
くお願いいたします。




[ ]