2017-06-16 74 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) 
相關問題