2017-06-16 36 views
0

我想为C++ STL文件生成一个标签文件。但它似乎效果不佳。 例如,我使用下面的命令如何为未来的C++ STL模板文件生成标签文件?

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

“未来”是从GCC

结果文件,标签文件中像下面

!_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 // 

无法找到像“异步任何标签未来,如下图所示,

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

ctags的功能是不是很有限,而不是试图解析花哨的可变模板方式过分乐观? – VTT

回答

0

您指定了“futur e“作为命令行上的输入文件名称。我不知道你正在使用哪个ctags的实现,但我猜ctags无法知道将来使用的语言。所以ctags不能选择适合“未来”的解析器。如果使用--language-force = C++显式指定“future”的语言,ctags可能会正常工作。以下行显示通用ctags(https://ctags.io)标记两个“异步”。

[[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) 
相关问题