Der Standard GNU etags
unterstützt einen rekursiven Durchlauf von Verzeichnissen nicht, wie von exuberant ctags -R
getan. Wenn ich nur Zugriff auf die GNU-Etags habe, wie kann ich bash shell magic verwenden, um ETAGS-Tabelle für alle C++ - Dateien *.cpp
und *.h
Dateien im aktuellen Verzeichnis und alle Verzeichnisse unterhalb der aktuellen rekursiv zu erstellen, um eine TAGS zu erstellen Tabelle in dem aktuellen Verzeichnis, das den richtigen Pfadnamen für emacs
hat, um die TAGS-Tabelleneinträge aufzulösen.Wie benutzt man Shell-Magie, um mit GNU-Etags rekursive Etags zu erzeugen?
Antwort
Die Emacs Wiki ist oft eine gute Quelle für Antworten auf häufige Probleme oder Best Practices. Für Ihr spezielles Problem gibt es eine Lösung für Windows und Unixen:
http://www.emacswiki.org/emacs/RecursiveTags#toc2
Grundsätzlich führen Sie einen Befehl, um alle .cpp
und alle .h
Dateien (ändern Datei-Selektoren zu finden, wenn Sie verschiedene Dateiendungen verwenden, wie zB , .C
) und leiten Sie das Ergebnis in Etags. Da Windows keine Xargs zu haben scheint, benötigen Sie eine neuere Version von Etags, die von stdin lesen können (beachten Sie den Bindestrich am Ende der Zeile, der stdin symbolisiert). Wenn Sie eine aktuelle Version von Etags verwenden, können Sie natürlich auch den Dash-Parameter anstelle von Xargs verwenden.
Windows-:
cd c:\source-root
dir /b /s *.cpp *.h *.hpp | etags --your_options -
Unix:
cd /path/to/source-root
find . -name "*.cpp" -print -or -name "*.h" -print | xargs etags --append
Dieser Befehl erstellt etags mit Standardnamen "TAGS" für C, CPP, .Cpp, .hpp Datei, .Hpp .h-Dateien rekursiv
find . -regex ".*\.[cChH]\(pp\)?" -print | etags -
Wie ist das? hast du "nur Zugang zu den GNU-Etags"? Exuberante Ctags sind für viele Plattformen frei verfügbar. Kannst du es nicht installieren? –
Der Arbeitgeber möchte nicht, dass nicht autorisierte Software installiert wird, würde das lieber nicht bekämpfen, wenn ich mit bereitgestellten 'Etags' umgehen könnte. – WilliamKF