2010-10-08 6 views
3

Comment est-il possible, sous emacs et C++, d'étendre etags couvrant plusieurs répertoires? (Je ne parle pas d'etgas récursif qui a une solution directe en utilisant l'option -R). Une telle chose est nécessaire, par exemple, dans le cas où nous utilisons une bibliothèque tierce, y compris ses en-têtes, qui pourrait être installée n'importe où dans la structure de répertoires.Comment etags peut-il gérer plusieurs répertoires

Un problème similaire auquel je suis confronté avec emacs en tant qu'éditeur C++ est comment ouvrir un fichier d'en-tête inclus directement à partir de sa directive #include.

Ceci est trivial pour les IDE (comme VC _ ++) puisque le chemin d'entêtes include fait partie du projet mais je ne trouve pas de solution similaire pour emacs qui en tant qu'espace plus fin n'utilise pas le concept de projet ... .

Répondre

3

Répondre à la question principale: utiliser FIND pour parcourir vos répertoires exemple dans mon script de marquage:

find . \(-name "*[tT]est*" -o -name "CVS" -o -name "*#*" -o -name "html" -o -name "*~" -o -name "*.ca*" \) -prune -o \(-iname "*.c" -o -iname "*.cpp" -o -iname "*.cxx" -o -iname "*.h" -o -iname "*.hh" \) -exec etags -a {} \; 

Astuce pour C++ et solution pour en-tête inclus: voir si cscope fonctionne mieux pour vous.

2

Vous pouvez également regarder dans GNU global au lieu de etags, ainsi que ff-find-other-file et ffap et connexes fonctions find-file-à point pour passer au fichier include que vous êtes. Les deux ensembles de fonctions ont diverses options de personnalisation afin que vous puissiez leur indiquer où chercher les en-têtes.

Questions connexes