2012-03-28 1 views
1

Wenn Emacs für ein git Projekt einrichten, ich bin mitWie konfiguriere ich eine TAGS-Datei (Etags) für mehrere Git-Projekte?

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

, die eine TAGS-Datei im aktuellen Verzeichnis erstellt. Ich möchte oft Symbole aus einem anderen Projekt enthalten, so dass ich hängen Sie sie mit absoluter Pfad:

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

Allerdings, wenn ich zwei git Repositories

git ls-files /path/to/git_project 

wird nicht funktionieren: git sagt mir, dass Der Pfad befindet sich außerhalb des aktuellen Repositorys. Ich könnte hinein cd, aber dann sind die auf stdout gedruckten Pfade nicht relativ zur TAGS-Datei, so dass Emacs sie nicht finden.

Gibt es eine elegante Möglichkeit, dieses Problem zu lösen? Alles, was mir in den Sinn kommt, ist eine zu komplizierte Shell-Script-Magie, die das Präfix jeder Zeile voranstellt, bevor sie in xargs einfließt ...

Antwort

1

Entschuldigung, ich bin kein Emacs-Benutzer. Ich werde Ihnen sagen, wie ich das in vim tun würde, so dass vielleicht können Sie eine Vorstellung von der gleichwertigen Lösung für Emacs erhalten:

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

Diese beiden Einstellungen erlauben Sie mir, die Tags in beiden Projekten gefunden zu springen.

+0

Klingt wie ein guter Ansatz, aber ich don Ich denke, Emacs unterstützt das Laden mehrerer Tag-Dateien (?) – maxy

0

Ich denke, was Sie wollen, ist

{ git ls-files; git --git-dir=/path/to/the/other/project\'s/.git ls-files; } \ 
| xargs -d\\n etags 

Wenn Sie den relativen Pfad zu der Vorderseite den Namen angehängt werden soll, genau das tun:

{ git ls-files 
    git --git-dir=path/to/other/.git ls-files | sed s,^,path/to/other, 
} | xargs -d\\n etags 
+0

Interessant, aber es hat den gleichen Effekt wie cd'ing in das Verzeichnis - die Dateien sind relativ zu dem Verzeichnis aufgeführt, aber ich brauche sie relativ zu der TAGS-Datei (oder mit absoluter Pfad). – maxy

Verwandte Themen