1

Ctags は、最も有名なタグ ツールです。ただし、ctags にはいくつかの欠点があり、ターゲット言語によって異なるいくつかのより良い選択肢があります。

たとえば、Ruby の場合、私はripper-tagsを使用することを好みます。また、JavaScript ではjsctagsをよく使用します。CoffeeTagsのようなものもあります。

それで、私の質問は、これらのツールをどのように統合または組み合わせるかです。すべての種類のファイルにomni-tags使用できるように、次のようなシェル スクリプト (またはその他のもの) を作成することは可能ですか。omni-tagsまた、ファイルの種類に応じて、さまざまなタグ ツールが自動的に呼び出されますか?

1 つのプロジェクトに複数のファイル タイプが存在する場合があるため、統一されたツールを使用してタグを生成できると便利です。

ありがとう。

4

1 に答える 1

1

特定の種類のソース コードを含むプロジェクトのみを扱っていると仮定すると、架空のomni-tagsコマンドは、シェルまたは任意のスクリプト言語 (Perl、Python、Ruby など) で簡単に実装できます。プロジェクト ディレクトリを再帰的にスキャンし、(ファイル拡張子を一致させるか、Unix プログラムを使用して) その中の主なタイプのファイルを探し、fileその特定の種類のソース ファイルに関連付けられたタグ生成プログラムを実行します。

複数の言語のコードを含むプロジェクトがある場合、これはより困難になりますが、不可能ではありません。.rb1 つの例は、Rubyソース ファイルとネイティブ C 拡張機能を実装するいくつか.cのファイルの両方を含む Ruby gemです。この場合、通常、Ruby と C のファイルはかなり明確に分離さ.hれています。つまり、gem のルート ディレクトリの下にある 1 つのディレクトリ ツリーはすべて Ruby であり、別のディレクトリ ツリーはすべて C ですomni-tags。とファイルとファイル上。ほとんどのエディターはプロジェクトごとに複数のタグ ファイルを統合できるため (少なくとも、Emacs はできることを知っています)、C ソースで定義されたシンボルと Ruby ソースで使用されているシンボルの間を移動できます (たとえば)。ctags.c.hripper-tags.rb

最も難しい部分は、タグ付けしたい複数の言語が混在するコード ベースをどのように処理するかです。たとえば、あなたの JavaScript の例では、JavaScript ファイルと CoffeeScript ファイルの両方を含むディレクトリがある可能性はありますか? この場合omni-tags、各ソース ファイルで各言語に適したツールを実行する必要があります。タグ生成ツールが適切なタイプではないファイルを無視するように作成されている場合は、プロジェクトのルート ディレクトリから各ファイルを実行してから、複数のタグ ファイルを統合するエディターを使用することができます。ツールに適切な種類のファイルのみを供給する必要がある場合は、omni-tags問題のファイルのインデックスを作成し、正しいファイルの名前のみを各ツールにフィードする必要があります。不可能ではありませんが、もう少し作業が必要になります (最初の段落で説明した最も単純なケースとは対照的に、おそらく Python または Ruby の約 10 行で実行できます)。

于 2014-11-02T23:33:03.223 に答える