Как настроить файл TAGS (etags) для нескольких проектов git? - PullRequest
1 голос
/ 28 марта 2012

При настройке 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 ]

1 голос
/ 24 мая 2012

Извините, я не пользователь emacs. Я расскажу вам, как бы я делал это в vim, чтобы, возможно, вы смогли получить представление об эквивалентном решении для emacs:

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

Эти две настройки позволяют мне переходить к тегам, найденным в обоих проектах.

0 голосов
/ 24 мая 2012

Я думаю, что вы хотите:

{ 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
...