2012-03-28 92 views
1

當設置爲Git項目的Emacs,我使用如何爲多個git項目設置標籤文件(etags)?

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

這會在當前目錄下的標籤文件。我常常想包括從另一個項目符號,所以我附上他們絕對路徑:

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

然而,當我有兩個混帳

git ls-files /path/to/git_project 

將無法​​正常工作:git的告訴我,該路徑在當前存儲庫之外。我可以將其放入它,但是然後打印在標準輸出上的路徑與標籤文件不相關,所以emacs不會找到它們。

有沒有什麼優雅的方法可以解決這個問題?所有進入我腦海的是一些過於複雜的shell腳本魔術,在將每行前綴添加到xargs之前...

回答

1

對不起,我不是emacs用戶。我會告訴你我怎麼會做這樣的VIM,這樣也許你能得到同等解決方案的理念爲Emacs:

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

這兩個設置允許我跳在兩個項目中發現的標籤。

+0

聽起來是個好辦法,但我不't認爲emacs支持加載多個標記文件(?) – maxy 2012-05-30 08:49:37

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 
+0

有趣,但它與cd'ing到目錄具有相同的效果 - 文件相對於目錄列出,但我需要它們相對於TAGS文件(或與絕對路徑)。 – maxy 2012-05-30 08:46:24