|
inouenです。
秀丸担当さんのコメントにつき以下の通り考えています。よろしくご検討お願いしま
す。
tags file 形式は現在のままでお願いします。
パラメータも含めた関数一覧表的な見方をすることもありますし、名前は同一でパラ
メータ数、
パラメータタイプの異なるルーチンの一つを選ぶ場合、パラメータもあるほうが良い
からです。
tags ファイルの「上の階層もチェックする」機能は使用させてもらっています。
c-diskにメーカ供給標準ライブラリソース、d-diskにプロジェクトソース、e-diskに
自分の
ソース等となっている場合にはそれでは解決せず、別々に指定する必要があります。
現状では別directoryのtags fileを同時に開いておき、関数名 コピー、検索窓に
ペースト +'('、
サーチ、タグジャンプの形で使っています。一番使うものは当然directTagJumpで使
いますが。
tags file作成時のルールが自動(ruletype=auto)の場合に '(' が関数検出の条件の
一つに
なっていると思います。
以下のような処理(擬似コーディング)で要望は実現できると考えられます。
(tags fileに "*" 一文字のみの行はあり得ないのでこれでもOKと考えました)
(そこまで書かなくても解りますよと言われるかもしれませんが、その場合ごめんな
さい)
1.tags file の最初の行に ruletype=auto の判定コメント行追加
if (ruletype==auto) write(fileid, "*\n");
2.tags file open後最初の行読み込み時に ruletype判定を追加
if (readbuff[0]=='*') ruletype=auto;
else ruletype=other;
3.target function nameが見つかった場合に ruletype 判定他を追加
/* cptr=buffer ptr: next to target function name */
if (ruletype==auto) {
while (*cptr==' '|| *cptr=='\t') cptr++; // ブランクを許さなければこ
の行不要
if (*cptr != '(' ) goto next_line_search;
}
以上の通り、10行前後で実現出来るように思います。
例えば "Event" のclass関数宣言を参照した場合は次のようになります。
この内 event.java(8): に飛ばしたいわけです。
inchannel.java(21) : public Event[] activeEvents() {
inchannel.java(35) : protected void enchain_activeProcess(Event event) {
inchannel.java(51) : protected void enq_inchEventQ(Event event) {
arrays.java(8) : public static void sort(Event[] a, Event[] aux, int leng
th) {
arrays.java(13) : private static void mergeSort(Event src[],Event dest[],i
nt low,int high) {
event.java(8) : public Event(int id) {
event.java(12) : public Event save() {
evtw.java(14) : protected Event evw_extract_topevent() {
evtw.java(20) : protected void evw_insq(Event event) {
evtw.java(44) : protected Event evw_get_topevent() { // get top time
stamp event
outchannel.java(34) : public void write(Event event, long delay) {
outchannel.java(49) : public void write(Event event) {
threadw.java(26) : protected void threadw_ins_timestep_eventq(Event event) {
|
|