1

git プロジェクトの emacs をセットアップするとき、私は使用しています

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

これにより、現在のディレクトリに TAGS ファイルが作成されます。別のプロジェクトのシンボルを含めたいことがよくあるので、絶対パスを追加します。

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

ただし、2 つのgitリポジトリがある場合

git ls-files /path/to/git_project

動作しません: git は、パスが現在のリポジトリの外にあることを教えてくれます。cd できましたが、stdout に出力されたパスは TAGS ファイルに関連していないため、emacs はそれらを見つけられません。

この問題を解決するエレガントな方法はありますか? 私の頭に浮かぶのは、xargsにフィードする前に各行にプレフィックスを追加する、複雑すぎるシェルスクリプトマジックです...

4

2 に答える 2

1

申し訳ありませんが、私は emacs ユーザーではありません。emacsの同等のソリューションのアイデアを得ることができるように、vimでこれを行う方法を説明します。

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

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

于 2012-05-24T13:22:42.210 に答える
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
于 2012-05-24T14:32:27.353 に答える