emacs - 为什么 etags 生成损坏的 TAGS 文件?

标签 emacs tags etag

我有以下最小源文件:

$ 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 —— 是假的!

我喜欢能够通过做类似 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

新信息 :

我刚刚注意到,在我上面的原始问题中,这两种用法之间的区别是领先的 .在路上。如果我将 etags 称为 etags ./path/xx/yy/fooBar.c ,它会损坏文件。因此,解决方法是确保 etags 的 args 没有前导标签。 (也许这是 etags 中的一个错误,因为文档几乎完全准确地描述了我的使用模式。)

最佳答案

我在这里面临同样的问题。但是,鉴于您尚未提供您使用的 etags/emacs 版本,我不是 100%,我们在谈论同样的问题。

我的 etags/emacs 版本 23.1,我认为 etags 中存在一个错误,当文件名以“./”为前缀时会损坏文件名。例如,我选择了一个名称被损坏的特定文件,并为它生成了带有和不带有“./”前缀的 TAGS 文件。损坏仅发生在“./”前缀下。

我的 - 解决这个问题 - 解决方案是在将文件名提供给“etags”之前删除“./”前缀。这是我如何做到的:

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

这对我有用,希望对你有用!

关于emacs - 为什么 etags 生成损坏的 TAGS 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3875122/

相关文章:

java - 用于 emacs 的最佳 Java 工具

emacs - 如何设置键绑定(bind)以在 emacs 中的某些模式下工作而不在其他模式下工作

c++ - 在新编译期间浏览以前的编译错误?

java - 更改每个列表元素的 ArrayList<?> 标记

c++ - 远近不一致

apache-httpclient-4.x - apache httpclient 和 etag 缓存

emacs - 如何隐藏 emacs 状态行?

grails - Grails自定义标记<<

http - 这会保护我免受 Etag 跟踪吗?

json - 浏览器缓存: Json response