ツリー表示の定義の優先度についてNo.34409
ktyu さん 15/09/07 02:17
 
ツリー表示の定義で複数のルールが同じ行にヒットする場合に
適用される優先度はどのように設定すればよいのでしょうか?
例えば以下の内容の時に


function OnTest(){}


ツリー表示の定義が以下の場合
1番目の定義
 正規表現: function \c+\s*\([^)]+\)
 グループ名: function
2番目の定義
 正規表現: function (On\c+)\s*\([^)]+\)\{
 グループ名: event


この状態でアウトライン解析で ツリー表示-分類 にすると
表示されるのは「event」ですが
「event」のプロパティで表示タグを\1に設定すると
表示されるのは「function」になってしまいます
また表示タグなしで
2番目の定義を function (On\c+)\s*\([^)]+\)
に変更した場合は表示されるのは「function」になります

こういったルールの内容に関係無く並び順だけで優先度を設定したいのですが
どうすればいいでしょうか?

[ ]
RE:34409 ツリー表示の定義の優先度についNo.34410
秀丸担当 さん 15/09/07 15:05
 

確かに言われている通りになりました。
優先順位としては、先にヒットして、長い文字列が優先されていました。
同じ行でも行頭に近いほうが優先され、同じ位置でもヒットした文字列が長いと
優先されることになります。
例えば「function」と「unction」の2つの定義があれば、「function」が優先
されます。
「funct」と「function」の2つの定義があれば、「function」が優先されます。

このことが「OnTest」という位置のヒットとみなされ、優先順位が低いことにな
っていました。
「表示タグ」の指定は、表示のみに使われるべきで、優先順位に使われるべきで
はないので、今後のバージョンで修正させていただきます。


現状で回避するとしたら、グループ名functionのほうを、ヒット位置が後ろにす
るように書くと回避できました。
例えば、
(?<=function \c+\s*\([^)]+\)).*

function \c+\s*\([^)]+\)(.*)(?\1)
というように書くと、末尾あたりがヒットする位置になります。
さらに、ツリー表示項目のプロパティで「オプション>>」を出して、「表示範
囲」を「行全体」にしておくと、行頭から見えるようになります。

[ ]
RE:34410 ツリー表示の定義の優先度についNo.34436
ktyu さん 15/09/13 01:24
 
b5での表示タグの対応ありがとうございます

>現状で回避するとしたら、グループ名functionのほうを、ヒット位置が後ろにす
>るように書くと回避できました。

優先度についてはこの方法しか無いのでしょうか?
定義を追加するたびに既存の定義を見直さないといけませんし
ライブラリで公開されているものにユーザーが手を加えた場合整合性がなくなる場合
もあるので
可能ならば別に優先度を設定できれば便利なのですが


[ ]
RE:34436 ツリー表示の定義の優先度についNo.34439
秀丸担当 さん 15/09/14 10:13
 

先にヒットして同じ位置なら長い方になりますが、同じ位置で同じ長さであれば、
ツリー定義の上にあるほうが優先となるということもありました。
一行全部がヒットするように書くと、結果的に定義の順番が優先になります。
例えば
^.*aaa.*$
^.*bbb.*$
という2つの定義があると、順番通りになります。

ただそれだと既存のものを見直す必要が出てきてしまうので、設定があったほう
がいいと思います。
[その他]→[ファイルタイプ別の設定]→[アウトライン]→[解析]の「ツリーの動
作...」あたりに、定義の順番通りを優先とするようなオプションの追加を検討
します。

分類モードについては、V8.56β5で修正し、試していただくことができます。
以下のページの下のほうからダウンロードできます。
http://hide.maruo.co.jp/software/hidemaru.html

[ ]
RE:34439 ツリー表示の定義の優先度についNo.34446
秀丸担当 さん 15/09/15 10:56
 

V8.56β6で、優先順位を定義の順番通りとするオプションも追加しました。
[その他]→[ファイルタイプ別の設定]→[アウトライン]→[解析]の「ツリーの動
作...」から変更できます。

[ ]
RE:34446 ツリー表示の定義の優先度についNo.34454
ktyu さん 15/09/17 00:14
 
Ver8.56β6 での対応ありがとうございます
期待通りの動作になりました。

[ ]