2012-03-28 3 views
1

、私は現在のディレクトリにタグファイルを作成します複数のgitプロジェクト用にTAGSファイル(etags)を設定するには? gitのプロジェクトのためのEmacsをセットアップするとき

git ls-files | xargs -d\\n etags 

を使用しています。 Iしばしば別のプロジェクトからのシンボルを含めたいので、私は絶対パスでそれらを追加します。

etags -a /path/to/project/*.[ch] 

しかし、私は2つのgitのリポジトリ

git ls-files /path/to/git_project 

を持っている場合は動作しません:gitがあることを私に伝えますパスは現在のリポジトリの外にあります。私はそれにcdすることができますが、stdoutに出力されたパスはTAGSファイルに相対的ではないので、emacsはそれらを見つけられません。

この問題を解決する方法はありますか。私の頭に浮かぶのは、xargsに入る前に接頭辞を各行に追加するために複雑すぎるシェルスクリプトの魔法です。...

答えて

1

申し訳ありません私はemacsユーザーではありません。私は多分あなたはemacsのための同等の解決策のアイデアを得ることができるように、私はvimの中でこれを行うと思いますどのようにあなたを教えてあげる:

:set tags=/path/to/project1/tags,/path/to/project2/tags 
:set path=/path/to/project1,/path/to/project2 

これら2つの設定は、私は両方のプロジェクトで見つかったタグにジャンプすることができます。

+0

は良いアプローチのように聞こえるが、私ドンemacsは複数のタグファイルの読み込みをサポートしていると思います(?) – maxy

0

私はあなただけで行うことを、名前の前に相対パスを追加したい場合は何がしたいことは

{ git ls-files; git --git-dir=/path/to/the/other/project\'s/.git ls-files; } \ 
| xargs -d\\n etags 

だと思う:

{ git ls-files 
    git --git-dir=path/to/other/.git ls-files | sed s,^,path/to/other, 
} | xargs -d\\n etags 
+0

興味深いですが、ディレクトリへのcd'ingと同じ効果があります - ファイルはディレクトリに関連して表示されますが、TAGSファイル絶対パス)。 – maxy