6

次の最小限のソース ファイルがあります。

$ cat path/xx/yy/fooBar.c 
void this_is_a_test(void)
{
}

このように etags を実行すると、問題なく動作します。

$ etags path/xx/yy/fooBar.c 
$ cat TAGS 


path/xx/yy/fooBar.c,25
void this_is_a_test(1,0

しかし、find/xargs 経由で etags を実行すると、TAGS ファイルが破損します。

$ find . -name fooBar.c
./path/xx/yy/fooBar.c
$ find . -name fooBar.c | xargs etags
$ cat TAGS


path/xx/yy/fBoBar.c,25
void this_is_a_test(^?1,0

上記のファイル名が fBoBar.c として表示されていることに注意してください -- 偽物です!

のようなことで TAGS を生成できるのが好きfind . -name '*.[ch]' | xargs etagsです。しかし、これを行うと、ほとんどのファイル名が破損しています。

このように失敗する理由、および/またはそれを機能させるために私にできることはありますか?

Ubuntu ルシッド。Etags は emacs23-bin-common 23.1+1-4ubuntu7 からのものです。

編集

fschmitt の質問への回答:

$ etags $(find . -name fooBar.c)
$ cat TAGS 


path/xx/yy/fBoBar.c,25
void this_is_a_test(1,0

新しい情報:

上記の最初の質問での 2 つの用途の違いが.、パスの先頭にあることに気付きました。のような etags を呼び出すとetags ./path/xx/yy/fooBar.c、ファイルが破損します。したがって、回避策は、etags への引数に先行タグがないことを確認することです。(おそらく、これは etags のバグです。ドキュメントには私の使用パターンがほぼ正確に記述されているためです。)

4

5 に答える 5

6

私はここで同じ問題に直面しています。ただし、あなたが使用している etags/emacs のバージョンを提供していないことを考えると、同じ問題について話しているのは 100% ではありません。

私の etags/emacs バージョン 23.1 には、"./" を前に付けるとファイル名が壊れるバグがあると思います。たとえば、名前が破損している特定のファイルを 1 つピックアップし、「./」プレフィックスの有無にかかわらず、そのファイルの TAGS ファイルを生成しました。破損は、「./」プレフィックスでのみ発生しました。

私-問題を回避-解決策は、ファイル名を「etags」に渡す前に「./」プレフィックスをカットすることです。これが私がそれを行う方法です:

find . -name '*.[hc]' -print  | cut -c3- | xargs etags -

これは私にとってはうまくいきます。

于 2011-09-16T20:36:27.747 に答える
1

上記の元の質問での2つの使用法の違いが主要なものであることに気づきました。パス上。また、etags ./path/xx/yy/fooBar.cのようなetagsを呼び出すと、ファイルが破損します。したがって、回避策は、etagへの引数に先頭のタグがないことを確認することです。(おそらく、これはetagsのバグです。これは、ドキュメントに私の使用パターンがほぼ正確に記述されているためです。)

于 2010-10-12T17:59:40.707 に答える
0

変ですね。するとどうなるか

etags `find . -name '*.c'` `find . -name '*.h'`

代わりは?

于 2010-10-06T17:35:53.687 に答える
0

-標準入力から読み取るには、etagsの後に必要です。

find . -name fooBar.c | xargs etags -

編集:

おっと、私は本当に質問全体を読むべきでした。なぜファイル名が壊れているのかわかりません。しかし、あなたはまだ使用する必要があります-:)

于 2010-10-06T17:35:18.503 に答える
0

これが私がすることです:

etags --members `find ./ | grep [ch]$`

HTH。

于 2011-07-14T05:40:01.493 に答える