ダイレクトタグジャンプ機能拡張:ファイNo.08621
inouen さん 05/08/01 10:28
 
現在のtagsファイルにダイレクトファイルジャンプ操作でファイルジャンプを可能と
する
エントリを追加することを検討されるよう要望いたします。

処理としては、tagsファイルの作成時、対象ファイルとなったものにつき、
ファイル名と同一の関数名が登録されるかどうか確認しておき、登録されなかった場
合、
ファイル名と同一のダミー関数を登録する。

例:IOHandler.c ==> void IOHandler(#);  // "#" でファイル名対応のダミー関数
を示す
 IOHandler.h ==> void IOHandler(#);

この追加機能を働かせるかどうかは、tagsファイルの作成指定窓に サブフォルダも
検索、ファイル名を
フルパスで出力の選択指定と同じく、次のような選択を追加すれば良いのではと考え
ます。

[] include/importファイル、データ構造参照についても出力 (この機能選択を標
準とする?)

なおこの機能が選択された場合、対象ファイルに *.h ファイルも含めるようにして
下さい。


インターフェースファイル、データ構造の参照等にあたり関数指定ではなく
対応ファイルを直接開きたい場合がかなりの頻度であります。

そのためにinclude/import file, データ構造名ファイル(データ構造+関数:一般ja
va file等)
の参照のために、現在秀丸エディタマクロライブラリにダイレクトファイルジャンプ
マクロを
登録して使って頂いています。これで一応は問題は解決しています。

但し、秀丸を初めて使う人等ではこのマクロに気付いていない人も多いのではと思い
ますし、
或いは、ダイレクトタグジャンプを行って"見つかりませんでした"の表示が出て
あらためてファイルジャンプマクロのキー操作をやるよりも、最初のダイレクトタグ
ジャンプで
直接ファイルを開けたほうが良いのではと考えての要望です。

以上、検討していただくようお願いします。

[ ]
RE:08621 ダイレクトタグジャンプ機能拡張No.08629
秀丸担当 さん 05/08/01 14:11
 

>現在のtagsファイルにダイレクトファイルジャンプ操作でファイルジャンプを可能と
>する
>エントリを追加することを検討されるよう要望いたします。

よくわからないですが、ダイレクトタグジャンプで、tagsファイルを直接開くと
いうことでしょうか。
そうだとしたら、tagsファイルを直接開くことは一般的ではないため、マクロで
できているのであればそれでいいように思います。

tagsファイルの作成を毎回行うのは手間で、それを自動的に行うような機能があ
ったら便利と思うことがありますが、そういうことではないですよね。

他のスレッドでもそうですが、私がjavaについて理解していないためか、inouen
さんのおっしゃっていることがいまいち理解できていません。

[ ]
RE:08629 ダイレクトタグジャンプ機能拡張No.08672
inouen さん 05/08/03 15:12
 
ファイルジャンプマクロの機能については、秀丸エディタマクロライブラリ
2004/09/13登録のダイレクトファイルジャンプマクロ(=fjmacro)を使って
動作を確認してください。

このfjmacroは、主にデータ参照のサポートを目的としたものです。

関数、サブルーチンの参照についてはダイレクトタグジャンプでサポートされて
いるので問題ないのですが、プログラム作成、デバッグ中等にデータ構造の参照、
モード変数:stateの値5の意味、他にstateにどのようなモードがあるのか等を
チェックするためにinclude file他を参照したい場合、
interface宣言:関数prototype宣言を参照したい場合等に役立つように考えたもので
す。

include fileをサーチする場合、Source directory以外にInclude directoryも
含めたdirectoryの所にtags fileを作成しておく必要があります。

例えば
  include resource.h
と指定されているファイルを参照する場合、resourceにカーソルを合わせ、
fjmacroを実行すればresource.hファイルを開くことが可能です。

javaのケースでは、多くの場合データ構造名:Object type名==ファイル名
の関係があり、データ構造名にカーソルを合わせ、fjmacroにより直接対応
ファイルを参照可能です。

例えばObject宣言 (cでは struct Socket mysocket; に対応?)
  Socket mysocket;
に対しては Socket.javaファイルがあり、そのデータ構造を参照したい場合に
fjmacroを使用し、Socket.javaファイルの先頭から参照するわけです。

include resource.hファイルに対応したエントリをtagsファイルに追加する場合、
関数宣言:関数本体ががその中には無いはずですので、ファイルジャンプ
サポート用ダミーエントリを次のように直接追加する形でよいと思います。

resource.h(1) : void resource(##)

ダイレクトファイルジャンプの処理では関数名サーチをcasesense状態でされて
いるようです。

javaの場合はcasesense状態でよく、ファイル名をそのまま関数名としてよい
のですが、c等の場合では、ファイル名は大文字、参照側では小文字で処理されて
いる場合等もあるようです。

したがって RESOURCE.Hのファイル名にたいして、include resource.hで参照している
場合でも処理可能なように、tagsファイル内のダミー関数名は小文字化する、
関数名サーチ時、resource(##)等のダミー関数名と比較する場合 nocasesense状態で
比較する必要があると思います。

なお、自分で作成した、current directory内のデータ構造参照等ではgrepでサーチ、
ジャンプすることで簡単に処理可能ですが、
project directory, database package, c-runtime,os-function等どれに含まれて
いるか分からない場合等では grepでは時間が掛かるので対応するファイル名が
わかっている場合、fjmacroで簡単にサーチしたいわけです。

(勿論各package毎にtagsファイルを作成し、秀丸の動作環境:tagsファイルに
各tagsファイルの場所を登録しておく必要がありますが)

############################################################################
別案として ダイレクトタグジャンプが失敗した場合、fjmacroを呼び出して
ファイルジャンプを実行し、対応するファイルを開くことでも可能では
ないかと思います。

秀丸の各機能の前処理、後処理、エラー処理としてマクロを登録しする機能があれば
便利に使用できる場合があるのではと思われます。

パラメータ、マクロでの処理結果を伝える機能他も必要になる等、複雑になるかも
知れませんが、他のマクロ作者の考えも聞かれて検討していただけたらと思います。

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

[ ]
RE:08672 ダイレクトタグジャンプ機能拡張No.08673
秀丸担当 さん 05/08/03 16:19
 

説明ありがとうございます。

ダイレクトタグジャンプで、「tagsファイル内にその関数または強調行が見つか
りませんでした。」というエラーメッセージが出ているときに、「tagsファイル
を開く」みたいなボタンがあるといいのかと思ったのですが、そういうことでし
ょうか。
そういうことでしたら、比較的簡単にできるかもしれないです。


>############################################################################
>別案として ダイレクトタグジャンプが失敗した場合、fjmacroを呼び出して
>ファイルジャンプを実行し、対応するファイルを開くことでも可能では
>ないかと思います。
>
>秀丸の各機能の前処理、後処理、エラー処理としてマクロを登録しする機能があれば
>便利に使用できる場合があるのではと思われます。
>
>パラメータ、マクロでの処理結果を伝える機能他も必要になる等、複雑になるかも
>知れませんが、他のマクロ作者の考えも聞かれて検討していただけたらと思います。

これはこれで別件として、参考にしたいと思います。

[ ]
RE:08673 ダイレクトタグジャンプ機能拡張No.08674
inouen さん 05/08/03 18:19
 
「tagsファイル内にその関数または強調行が見つかりませんでした。」
と表示されている場合に、
「ファイルサーチを続行しますか」と問い合わせるボタンがあればと思います。

出来ればその時に fjmacroの61行で得られたファイル名:
  if(strstr($searchfile,".")==-1) $searchfile=$searchfile+".*";
$searchfileを表示していただけたらよりはっきりするのではと思います。

######################################################################
それとは別に、登録しているダイレクトファイルジャンプマクロを標準組み込み
マクロとして、秀丸をインストール時に自動的に使用できるようにして
いただけたらと考えています。

キー割り当て一覧にも表示し、標準のファンクションキー割り当ても行って頂けたら
良く使われるのではと思います。

include fileを開いてみたい、特にJavaではデータ構造を見てみたいといった場合に
便利に使用されるのではと思います。

僕の場合ではjava プログラムの開発にダイレクトタグジャンプ操作回数の20-40% ?
程度の割合でfjmacroを使っています。

同一ファイル内にファイル名と同じ関数名があると分かっていても、データ構造を
見たい場合には最初からダイレクトタグジャンプではなくfjmacroを使用しています。

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

[ ]
RE:08674 ダイレクトタグジャンプ機能拡張No.08678
秀丸担当 さん 05/08/04 10:22
 

つまり、javaに特化した機能として、拡張子を除いたファイル名部分だけでファ
イルへのジャンプができたらいいということでしょうか。
ダイレクトタグジャンプでエラーが出た後に「ファイルサーチを続行しますか」
と出てその機能が働くというのは、なんとなく違和感を感じます。

[その他]→[動作環境]→[その他のコマンド]→[tagsファイル]あたりに、ファイ
ル名へのジャンプを有効とするようなものがあったほうが適切かもしれないです。


ちなみに、C言語に特化した機能として、#includeの行のファイルジャンプがで
きます。

#include <hogehoge.h>

などと書かれている行でタグジャンプ(ダイレクトタグジャンプではない)をす
ると、環境変数INCLUDEに書かれているパスを検索して、ファイルを開きます。

javaでも同様のことができたらいいかもしれないですが、どういったものが適切
かわからないです。
ちょっと調べたところでは、javaでは環境変数CLASSPATHというのがあるようで
すが、javaにincludeというのは無いのでしょうか。
CLASSPATHを検索してファイルジャンプの機能が働いたらいいんじゃないかと思
ったのですが、使わないのでわかりません。

[ ]
RE:08678 ダイレクトタグジャンプ機能拡張No.08689
inouen さん 05/08/07 17:08
 
ファイルジャンプ機能はエディット中にファイル名(ファイル拡張子付、無共)
が出てきた時に、対応するファイルを開くことが出来たらと考えたものです。
javaは単なる例として示したものでjava特化機能ではなく一般機能として
考えています。

*.c .cc .cpp .h .txt .log .mak .java .tcl .perl等エディタで表示できる
ファイルは全てサポート出来ると考えています。
登録したダイレクトファイルジャンプマクロもそのようになっています。


>ちなみに、C言語に特化した機能として、#includeの行のファイルジャンプが
>できます。


この機能はコメントを見て初めて気が付きました。
秀丸エディタヘルプでは明示されていないようですね。

このC特化機能は #include hogehoge.h 等と #includeの行しかサポートされてない
ようですし、拡張サーチするディレクトリも環境変数:INCLUDEに関してのみですね。

この機能は秀丸担当さんが自分であったら便利だと言うことで追加されたのでは
と思いますが、他の言語、一般ファイルでも当然あったら便利に使えますし、
ぜひ欲しい機能ですので、後少し一般化してベーシックにサポートして
いただけないでしょうか。

tagsファイルへのファイル名対応ダミーエントリ追加、あるいは
ダイレクトファイルジャンプマクロの秀丸インストール時の標準組み込み
の案を記していましたが、それよりもベーシックサポートでお願いしたい
と考えています。

これを次のようにして頂けたらと思います。


1.ファイルサーチコマンドを追加する。

2.tagsファイルの指定に環境変数の指定も可能とする。
  tags;c:\myproject\tags;%INCLUDE% 等

3.tagsファイル指定を複数のメニューから選択可能とする。
  pull down menuから選択
  c関係-projectA; c関係-projectB; java関係-A等、相互に無関係の複数の
  プログラムを開発する場合等に必要

4.tagsファイルの指定は上級者向け設定の指定無しに直接ウィンドウ、ファイル、
  編集等と同じレベル?で設定可能とする
  一般の人に積極的に複数ディレクトリのtagsファイル参照が可能なことを明示し、
  設定できるようにした方が良いと考えます。

5.任意ファイルをサーチ出来るようにするため、カーソルが行末、ブランクにあった
  場合、ファイル名を問い合わせる。
  任意の別ディレクトリのファイルをサーチし開くことを可能とする:
  (登録しているマクロを参照し、実行してみてください)

6.ダイレクトファイルジャンプ実行時と同じくバックタグジャンプで元に戻れるこ
と。

7.無視拡張子指定を可能とする。
 拡張子指定無しの場合(progxxx)任意の拡張子を付けたファイル(progxxx.*)を
 サーチするが、無視拡張子(exe,obj,class,bin,lzh,jar...)のものは省く。


 (なお、ヘルプの説明ににファイル名を(””)でくくって指定するように
  記されていますが、その必要があるのはファイル名にブランクを含む場合のみで
  通常は””は不要です。



このようにすればC言語特化処理:#include先行の確認等は不要のはずです。

出来ればダイレクトファイルジャンプマクロをダウンロードして使用されている方等の
コメント、その他の要望等も記して頂けたらと思います。

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

[ ]
RE:08689 ダイレクトタグジャンプ機能拡張No.08690
秀丸担当 さん 05/08/08 15:58
 

ファイルサーチコマンドを追加するということであれば、現状でダイレクトタグ
ジャンプがそれに相当するのではないかと思います。
ファイル名を範囲選択してダイレクトタグジャンプ、またはファイル名と思わし
き場所のカラー表示でダイレクトタグジャンプができます。

指定のパスを検索することや、拡張子を省略してジャンプする機能を追加すると
したら、充分に上級者向けの設定の位置づけられるものだと思います。
いずれにせよ、ネタとして参考にしたいと思います。

ちなみに[動作環境]→[ファイル]→[開く]→[ファイル検索パス]の指定で、開く
ダイアログでのファイル名入力でパスを検索して開くこともできます。
ダイレクトタグジャンプには、この指定は適用されていません。

[ ]
RE:08690 ダイレクトタグジャンプ機能拡張No.08693
inouen さん 05/08/12 15:56
 
>ファイルサーチコマンドを追加するということであれば、現状でダイレクトタグ
>ジャンプがそれに相当するのではないかと思います。
>ファイル名を範囲選択してダイレクトタグジャンプ、またはファイル名と思わし
>き場所のカラー表示でダイレクトタグジャンプができます。

ダイレクトタグジャンプは 秀丸の"tagsファイルの作成"コマンドでサポートされ
ているファイルタイプ:c,cpp,cc,java 等のファイル中に ファイル名と同じ
関数名の実体がある場合にのみ、ファイルジャンプと同様の機能が実現可能と
思います。
すなはち、tagsファイルにファイル名と同じ関数名のエントリが登録され、
エディット中のファイルのその関数名にカーソルを合わせるか選択し実行した
場合に対応する同一名のファイルを開くように動作すると思います。

ダイレクトタグジャンプではtagsファイル作成の対象外のファイルタイプの
ファイル、あるいはtagsファイル作成対象のファイルであっても、ファイル名と
同一の関数名の実体が含まれていないファイルは開くことが出来ません。

ダイレクトファイルジャンプマクロでは、これらtagsファイルにファイル名に
対応する関数が登録されない場合等、全てのケースでのサポートを可能と
したいために作成したものです。

たとえば myproject.mak ファイル中で !include <win32.mak> 等と他の
makeファイルを参照している場合でも、win32にカーソルを合わせ、そのファイル
を開くことが出来ます。
(但し現在サーチするのは、current directory, 動作環境のtagsファイル
(複数登録可)のdirectory 或いはそのsub directoryなので、win32.makファイルは
その範囲にある必要があります)

これらの動作については登録済ダイレクトファイルジャンプマクロを
参照してください。


>指定のパスを検索することや、拡張子を省略してジャンプする機能を追加すると
>したら、充分に上級者向けの設定の位置づけられるものだと思います。
>いずれにせよ、ネタとして参考にしたいと思います。

誤った設定をした場合、"tagsファイル内にその関数...が見つかりませんでした。"
の表示が出るだけで、その他には悪影響はないので一般コマンドとしても良いの
ではと考えたわけです。
標準設定内容は"Tags"だけですし、誤って設定し、もとに戻したい人のためには
"tagsファイル(T)" のタイトルを "tagsファイル(T): 標準=Tags”
とでも変更するだけで良いのではと思います。
(この件:上級者向け...は小さいし、そんなにこだわっているわけではありません)


>ちなみに[動作環境]→[ファイル]→[開く]→[ファイル検索パス]の指定で、開く
>ダイアログでのファイル名入力でパスを検索して開くこともできます。
>ダイレクトタグジャンプには、この指定は適用されていません。

ダイレクトタグジャンプと同様にワンタッチで対応するファイルが開けたらと
考えているわけでして、[動作環境]→と辿るのでは、explorerでサーチして
開くのと余り差がないように思います。
(現在のファイル検索パスの機能の理解不足でしたら御免なさい)


登録済みのファイルジャンプマクロをDOS環境変数:INCLUDE等も含めてファイル
サーチするように(tagsファイルの指定に %INCLUDE%等が指定されていた場合)
トライして見ましたが、概略動いています。
同じくtagsファイルを作らなくても、directoryをtagsファイルに指定すれば
サーチするようにも出来ます。例えば以下のようになります。

tags;d:\myproj\lib\src\tags;c:\j2sdk-1.4.2-05\src\tags;d:\std\texts;
%INCLUDE%;%MATHPACKAGEPATH%

ご要望があれば、動作確認追加の上再登録するつもりでいます。


但し、出来れば以上の機能を含んだファイルサーチコマンドを標準でサポート
していただければ、動作速度も速いですし、マクロ作成作業と比べさらに大幅な
作業を要するようなことはなく実現可能なのではと思います。

初心者もマクロをダウンロードすることなく使えるのでよりよいエディタになる
のではと考えています。

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

[ ]
RE:08693 ダイレクトタグジャンプ機能拡張No.08694
秀丸担当 さん 05/08/12 16:48
 

とりあえず、inouenさんの要望は理解しているつもりです。
ダイレクトタグジャンプでファイル名に対してジャンプする場合、

・指定のパスの検索する機能
・拡張子を省略してジャンプする機能

が追加されればいいということなのだと思います。
それはネタとして参考にしたいと思います。


以下はinouenさんが勘違いしているかもしれない点についてコメントしたいと思
います。

>ダイレクトタグジャンプは 秀丸の"tagsファイルの作成"コマンドでサポートされ
>ているファイルタイプ:c,cpp,cc,java 等のファイル中に ファイル名と同じ
>関数名の実体がある場合にのみ、ファイルジャンプと同様の機能が実現可能と
>思います。

そうではなくて、ダイレクトタグジャンプは既に、ファイルジャンプ機能として
機能しています。
同じフォルダに

aaa.txt
bbb.txt

の2つのファイルがある場合、aaa.txtファイル中に書かれた「bbb.txt」を範囲
選択してダイレクトタグジャンプすると、bbb.txtが開きます。
「ファイル名と思わしき場所」でカラー表示されている場合は、範囲選択しなく
てもカーソルを合わせるだけでジャンプできます。


>ダイレクトタグジャンプと同様にワンタッチで対応するファイルが開けたらと
>考えているわけでして、[動作環境]→と辿るのでは、explorerでサーチして
>開くのと余り差がないように思います。
>(現在のファイル検索パスの機能の理解不足でしたら御免なさい)

ファイルを開きたい場合はに毎回動作環境を開くわけではありません。
例えば、[動作環境]→[ファイル]→[開く]→[ファイル検索パス]に、

d:\myproj\lib\src
c:\j2sdk-1.4.2-05\src
d:\std\texts

という項目を追加しておくと、次からは動作環境は開かずに、[ファイル]→[開
く]で、test.txtと入力するだけで、どこのフォルダに居ても「d:\myproj\lib
\src\test.txt」「c:\j2sdk-1.4.2-05\src\text.txt」「d:\std\texts\text.
txt」を検索して開きます。



>登録済みのファイルジャンプマクロをDOS環境変数:INCLUDE等も含めてファイル
>サーチするように(tagsファイルの指定に %INCLUDE%等が指定されていた場合)
>トライして見ましたが、概略動いています。

環境変数を指定できるマクロがあると有効に使えるかもしれないです。
動作環境のtagsファイルの指定に%INCLUDE%とか書くとしたら、通常のダイレク
トタグジャンプでは認識されないので、エラーになってしまいます。

[ ]
RE:08694 ダイレクトタグジャンプ機能拡張No.08696
inouen さん 05/08/12 21:15
 
ファイルサーチ機能は以下のマクロ実行と同様な場合を考えていました。
  grep ".*",$searchfile,$dir,subdir,filelist,regular,fullpath;

ダイレクトタグジャンプでtagsファイル、ファイル検索パスでの指定ディレクトリ
及びそのサブディレクトリもサーチされるものと考えていました。

現在のファイルのディレクトリ、tagsファイル等での直接の指定ディレクトリでは
OKのようですが、サブディレクトリはサーチしないようですがどのようになって
いるのでしょうか。

あるいは上位パスにtagsファイルがある場合、tagsファイル、及びそれ以下の
パスのサーチもサポートされていますか。

これらの項目についての考え方がお互いに一致しなかったために議論が
かみ合わなかったように思われます。

ファイルジャンプマクロでは、
現在開いているファイルのディレクトリ、及びそのサブディレクトリ、
上位にあるtagsファイルのディレクトリ、及びそのサブディレクトリ、
tagsファイルに登録されているその他のディレクトリ、サブディレクトリ
等の順番でサーチするようにしています。


ファイル検索パスの機能は理解不十分ですみませんした。

ところがパスを登録して実行していて一度開けたファイルが、2個の他のパスを
登録してまた同じファイルを開こうとすると開けなかったケース等がありました。
OSはwindows2000, 及び winxp, 秀丸はversion5.01です。
こちらの操作ミスでなければよいのですが、詳細確認出来たら連絡いたします。

以上 よろしく御検討お願いします。


[ ]
RE:08696 ダイレクトタグジャンプ機能拡張No.08701
秀丸担当 さん 05/08/17 14:47
 

>現在のファイルのディレクトリ、tagsファイル等での直接の指定ディレクトリでは
>OKのようですが、サブディレクトリはサーチしないようですがどのようになって
>いるのでしょうか。

現状では、
tagsファイル内にサブディレクトリ付きで記述されていればサブディレクトリに
もジャンプします。
ファイル検索パスはサブディレクトリは検索していません。
C言語の環境変数INCLUDEもサブディレクトリは検索していません。

>あるいは上位パスにtagsファイルがある場合、tagsファイル、及びそれ以下の
>パスのサーチもサポートされていますか。

tagsファイルにサブディレクトリ付きで記述されていればジャンプできますが、
サブディレクトリを検索はしていません。

[ ]