Как настроить файл TAGS (etags) для нескольких проектов git?
При настройке Emacs для проекта GIT, я использую
git ls-files | xargs -d\\n etags
который создает файл TAGS в текущем каталоге. Я часто хочу включать символы из другого проекта, поэтому я добавляю их с абсолютным путем:
etags -a /path/to/project/*.[ch]
Тем не менее, когда у меня есть два репозитория git
git ls-files /path/to/git_project
не будет работать: git говорит мне, что путь находится за пределами текущего хранилища. Я мог бы зайти в него, но тогда пути, напечатанные на stdout, не относятся к файлу TAGS, поэтому emacs не найдет их.
Есть какой-нибудь элегантный способ решить эту проблему? Все, что приходит мне в голову, - это какая-то чрезмерно сложная магия сценариев оболочки, которая добавляет префикс к каждой строке перед передачей в xargs...
2 ответа
Извините, я не пользователь emacs. Я расскажу вам, как бы я это сделал в vim, чтобы вы могли получить представление об эквивалентном решении для emacs:
:set tags=/path/to/project1/tags,/path/to/project2/tags
:set path=/path/to/project1,/path/to/project2
Эти две настройки позволяют мне перейти к тегам, найденным в обоих проектах.
Я думаю, что вы хотите
{ 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