2010-06-03 21 views
28

Lorsque j'exécute ctags -R *, j'obtiens des erreurs indiquant que tous les répertoires ne sont pas des fichiers normaux et qu'ils les ignorent au lieu de générer des balises récursivement pour eux.La commande ctags ne se répète pas en disant "ce n'est pas un fichier normal"

ctags: skipping arpa: it is not a regular file. 
ctags: skipping asm: it is not a regular file. 
ctags: skipping asm-generic: it is not a regular file. 
ctags: skipping bits: it is not a regular file. 
ctags: skipping blkid: it is not a regular file. 
ctags: skipping boost: it is not a regular file. 

Quel est le problème?

Répondre

59

similaires à this et this, le problème est que vous n'êtes pas en cours d'exécution Exubérant Ctags, vous utilisez GNU Emacs etags, qui fournit également un exécutable ctags. Exécutez ctags --version et vous verrez quelque chose comme ceci:

ctags (GNU Emacs 23.1) 
Copyright (C) 2009 Free Software Foundation, Inc. 
This program is distributed under the terms in ETAGS.README 

Et si vous regardez dans la page de manuel, vous verrez que -R est en fait équivalent à --no-regex. En fait, la page de manuel ne mentionne même pas la récursivité comme option.

-R, --no-regex 
      Don't do any more regexp matching on the following files. May 
      be freely intermixed with filenames and the --regex option. 

Vous pourriez probablement générer les balises à l'aide récursive magic shell, mais vous pouvez rencontrer des problèmes sur la route si vous vous attendez à Exubérant Ctags. Donc, la meilleure solution est probablement d'installer les ctags que vous voulez à la place:

sudo apt-get install exuberant-ctags 

Exubérant Ctags peut également être installé de la source:

http://ctags.sourceforge.net/ 
+1

(une recherche simple pour les termes de problème sur Google se présente rien d'utile, donc nous espérons que cela aidera les gens à l'avenir) – indiv

+2

+1 pour une réponse très utile qui résout le problème –

7

Il se produit si vous avez des outils elvis-installés. les enlever avec quelque chose comme

sudo apt-get remove elvis-tools 

puis installez exubérantes-ctags par

sudo apt-get install exuberant-ctags 
+0

+1 Cela a résolu mon problème –