如何为未来的C ++ STL模板文件生成标签文件?

时间:2017-06-16 10:08:55

标签: c++ stl tags ctags

我想为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  /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME  Exuberant Ctags //
!_TAG_PROGRAM_URL   http://ctags.sourceforge.net    /official site/
!_TAG_PROGRAM_VERSION   5.8 //

无法找到任何标签,例如' async',' 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);

1 个答案:

答案 0 :(得分:0)

您在命令行中将“future”指定为输入文件名。我不知道你正在使用哪种ctags实现,但我猜ctags不知道将来使用的语言。所以ctags不能选择适合“未来”的解析器。如果使用--language-force = C ++明确指定“future”的语言,ctags可能运行良好。以下行显示Universal-ctags(https://ctags.io)标记两个“异步”。

[jet@localhost]/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);

[jet@localhost]/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

[jet@localhost]/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)