2017-06-16 1 views
0

Je veux générer un fichier de balises pour le fichier STL C++. Mais ça ne marche pas bien. Par exemple, j'utiliser en dessous de commandeComment générer un fichier de tags pour un fichier de modèle STL C++ comme futur?

sudo ctags -R --c++-kinds=+p --fields=+iaS --extra=+q future 

'futur' est un fichier de gcc

en conséquence, les balises fichier comme ci-dessous

!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/                          
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ 
!_TAG_PROGRAM_AUTHOR Darren Hiebert /[email protected]/ 
!_TAG_PROGRAM_NAME Exuberant Ctags // 
!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ 
!_TAG_PROGRAM_VERSION 5.8 // 

ne peut pas trouver un tag comme « async ',' future 'qui sont définis dans le fichier, avenir, comme ci-dessous,

template<typename _Fn, typename... _Args> 
    future<typename result_of<_Fn(_Args...)>::type> 
    async(launch __policy, _Fn&& __fn, _Args&&... __args); 

    template<typename _Fn, typename... _Args> 
    future<typename result_of<_Fn(_Args...)>::type>                                 
    async(_Fn&& __fn, _Args&&... __args); 
+0

Les capacités de ctags ne sont-elles pas plutôt limitées et ne tentent-elles pas d'analyser des modèles variés fantaisistes de manière trop optimiste? – VTT

Répondre

0

Vous avez précisé "futur e "comme nom de fichier d'entrée sur la ligne de commande. Je ne sais pas quelle implémentation de ctags vous utilisez, mais je suppose que ctags ne peut pas connaître la langue utilisée à l'avenir. Donc, les ctags ne peuvent pas choisir un analyseur approprié pour "futur". Si vous spécifiez une langue pour "future" explicitement avec --language-force = C++, ctags peut bien fonctionner. Les lignes suivantes montrent Universal-ctags (https://ctags.io) deux balises "async".

[[email protected]]/tmp% cat future 
template<typename _Fn, typename... _Args> 
future<typename result_of<_Fn(_Args...)>::type> 
async(launch __policy, _Fn&& __fn, _Args&&... __args); 

template<typename _Fn, typename... _Args> 
future<typename result_of<_Fn(_Args...)>::type>                                 
async(_Fn&& __fn, _Args&&... __args); 

[[email protected]]/tmp% ctags --version 
Universal Ctags 0.0.0(d30a62d), Copyright (C) 2015 Universal Ctags Team 
Universal Ctags is derived from Exuberant Ctags. 
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert 
    Compiled: Jun 26 2017, 00:15:01 
    URL: https://ctags.io/ 
    Optional compiled features: +wildcards, +regex, +multibyte, +option-directory, +xpath, +json, +interactive, +sandbox, +yaml, +aspell 

[[email protected]]/tmp% ctags --kinds-C++=+p --fields=+iaS --extras=+q --language-force=C++ -o - future 
async future /^async(_Fn&& __fn, _Args&&... __args);$/;" p typeref:typename:future<typename result_of<_Fn (_Args...)>::type> file: signature:(_Fn && __fn,_Args &&...__args) 
async future /^async(launch __policy, _Fn&& __fn, _Args&&... __args);$/;" p typeref:typename:future<typename result_of<_Fn (_Args...)>::type> file: signature:(launch __policy,_Fn && __fn,_Args &&...__args)