28 votes

ctags dans sublime text

Je viens de télécharger sublime text 2 beta 2182 sous ubuntu 10.10 avec Exuberant Ctags 5.8

Je veux l'utiliser pour coder en c++ et j'ai besoin d'un système d'auto-complétion et de navigation dans le code. (J'étais habitué à eclipse avec cdt)

J'ai cherché sur Google et j'ai trouvé ctags, un outil sympa qui peut le faire, et il y a un plugin pour sublime text. aquí .

Le problème est que je veux créer un fichier tag à partir de :

  1. c++ standard lib ( std::vector std::map etc )

  2. toutes les classes du framework que j'utilise.

Le point 1 est (je pense) le même que le point 2, je n'ai qu'à créer une liste d'étiquettes de librairies std dans mes /usr/include/c++/4.4.5/

j'ai donc téléchargé le plugin et l'ai installé, j'ai créé une taglist de cette manière :

$ cd /absolute_path_of_my_cpp_framework/
$ ctags -R *

J'ai modifié /home/me/.config/sublime-text-2/Packages/CTagss/CTags.sublime-settings avec cette ligne :

"extra_tag_files" : [".gemtags", "/absolute_path_of_my_cpp_framework/tags"]

J'ouvre maintenant un fichier cpp, je pointe le curseur sur le nom d'une classe de mon framework et j'utilise le key binding ctrl+t ctrl+t et rien ne s'est passé. Il n'y a que ce message dans la barre du bas :

ne trouve pas "class_name"

Quelqu'un peut-il m'aider ?

6voto

Matt Kline Points 3962

Je n'utilise pas personnellement Sublime Text, mais en supposant qu'il utilise les fichiers de balises d'une manière similaire à vim, vous devez générer des informations supplémentaires pour la complétion C++.

Utilisez ctags avec les options suivantes :

ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++

L'information a été prise à partir de cet article qui fournit également des copies des en-têtes de la bibliothèque standard que vous pouvez utiliser pour générer des balises.

2voto

W1M0 Points 312

Commandes Shell :

$ cd /absolute_path_of_my_cpp_framework/ (1)

$ ctags -R --languages=c++ --langmap=c++:+.inl --fields=+iaS --extra=+q --totals=yes --verbose=yes (2)

$ ctags -a -R --languages=c++ /usr/include/c++/4.4.5/ --fields=+iaS --extra=+q --totals=yes --verbose=yes (3)

$ subl . (4)

Description :

(1) Allez dans le dossier racine de votre projet pour vous assurer que le fichier de balises y sera créé.

(2) Générer un nouveau fichier de balises pour tous les fichiers C++ de votre projet, en ajoutant la prise en charge des fichiers .inl, de l'héritage, des modificateurs d'accès, du scoping qualifié de classe, etc.

(3) Ajoutez les balises pour les en-têtes de la librairie standard C++ au fichier de balises généré.

(4) Ouvrez le dossier dans Sublime Text.

Références :

  1. http://ctags.sourceforge.net/ctags.html
  2. https://www.chromium.org/developers/sublime-text
  3. http://www.tarosys.com/2014/07/adding-another-file-type-for-ctags.html
  4. Les ctags exubérants excluent les répertoires
  5. Vim et Ctags : Ignorer certains fichiers lors de la génération de balises
  6. https://www.topbug.net/blog/2012/03/17/generate-ctags-files-for-c-slash-c-plus-plus-source-files-and-all-of-their-included-header-files/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X