関数の強調表示No.36316
Y_H さん 18/01/31 12:13
 
8.77を利用させていただいています。

C++などの関数の先頭部分が複数行にまたがっていても
全体を強調表示する方法はありませんでしょうか?

昔からC-function.hilightの正規表現を利用させていただいていますが、
複数行にまたがっていても1行目しか適用されないです。

極端な例ですが、

void Class::Func(int a,
                 int b,
                 int c) const
{
}

みたいな場合、この3行を関数として強調表示したいです。

見出しバーやアウトライン解析などに表示される関数は、
複数行の関数も正しく1行にまとめて表示されているようなので、
今なら強調表示できるようにもなっているのかもと思って質問させていただきました。
よろしくお願いいたします。

[ ]
RE:36316 関数の強調表示No.36317
秀丸担当 さん 18/01/31 14:06
 

[その他]→[ファイルタイプ別の設定]→[デザイン]→[強調表示]にある行の強調表示
は、改行までの1行になっていて、複数の強調にすることはできないです。
行の強調表示という仕組みである限りは今後もこのままだと思います。

[その他]→[ファイルタイプ別の設定]→[デザイン]→[複数行コメント]で定義する場
合は、複数の強調が可能です。
複数行コメントをユーザー定義にして、例えばサンプルの関数に該当する書き方の場
合、以下のものを追加します。
開始文字列:^[_a-zA-Z][^\(=;:]*::[^\(;]+\([^;{]*$
開始文字列の正規表現ON
終了文字列:{
表示方法は「行の強調表示1」など一緒の色を選ぶことができます。

これだとコメントや文字列ができないので、/*〜*/、"〜"、//から行末などもユー
ザー定義して追加するといいです。
ただ、「#ifdef等のカラー表示」はユーザー定義の場合はできなくなります。

[ ]
RE:36317 関数の強調表示No.36324
Y_H さん 18/02/05 13:22
 
解説ありがとうございます。
「#ifdef等のカラー表示」も利用させていただいているので、
ちょっと複数行コメントで置き換えるのは難しそうです。
今まで通り、先頭行のみ強調表示で使用させていただきます。

「ファイルタイプ別の設定 - デザイン」の「場所の一覧」の中に、
「コメント」や「#ifdef等での無効部分」と同じような複数行ものとして、
「関数一覧が認識した部分」のようなものがあると嬉しかったのですが、
いろいろ現在の仕組みとぶつかるところもあるかもしれませんし、
可能そうであればいつか検討いただければと思います。

[ ]