1

在为 git 项目设置 emacs 时,我正在使用

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

在当前目录中创建一个 TAGS 文件。我经常想包含来自另一个项目的符号,所以我用绝对路径附加它们:

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

但是,当我有两个git存储库时

git ls-files /path/to/git_project

不起作用:git 告诉我路径在当前存储库之外。我可以 cd 进入它,但是打印在 stdout 上的路径与 TAGS 文件无关,因此 emacs 将找不到它们。

有什么优雅的方法可以解决这个问题吗?我想到的只是一些过于复杂的 shell 脚本魔法,在输入 xargs 之前为每一行添加前缀......

4

2 回答 2

1

对不起,我不是 emacs 用户。我会告诉你我将如何在 vim 中做到这一点,以便你可以了解 emacs 的等效解决方案:

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

这两个设置允许我跳转到两个项目中的标签。

于 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 回答