ctags忽略libc6,libstdc ++和boost的列表
我使用带有vim的ctags和OmniCppComplete插件。目前,当生成我的标签时,我会为每个库单独执行。对于libc6,我在处理过程中使用以下名为libc6-ignore的文件中的标记/宏列表来忽略:
__attribute__
__attribute_deprecated__
__attribute_format_arg__
__attribute_format_strfmon__
__attribute_malloc__
__attribute_noinline__
__attribute_pure__
__attribute_used__
__attribute_warn_unused_result__
__wur
__THROW
__nonnull+
我错过了我应该忽略的任何其他令牌,在为libstdc ++和boost生成标签时,我是否应该使用相同的列表或不同的列表?
对于任何感兴趣的人,我使用以下代码生成我的标记文件:
# First make sure apt-file is install and then do:
$ sudo apt-file update
# set up tags for libc, the standard C library
$ apt-file list libc6-dev | grep -o '/usr/include/.*.h'> ~/.vim/tags/libc6-filelist
$ ctags --sort=foldcase --c++-kinds=+p --fields=+iaS --extra=+q -I./libc6-ignore -f ~/.vim/tags/libc6 -L ~/.vim/tags/libc6-filelist
# create tags for stdlibc++ and STL
$ apt-file list libstdc++6-4.4-dev | grep -E -o '/usr/include/.*.(h|hpp)' > ~/.vim/tags/stdlibcpp-filelist
$ ctags --sort=foldcase -R --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/stdlibcpp -L ~/.vim/tags/stdlibcpp-filelist
# For Boost
$ apt-file list boost | grep -E -o '/usr/include/.*.(h|hpp)' | grep -v '/usr/include/boost/typeof/' > ~/.vim/tags/boost-filelist
$ ctags --sort=foldcase --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/boost -L ~/.vim/tags/boost-filelist
没有找到相关结果
已邀请:
4 个回复
铰齐插
箩冀娥
我可以直接跳到iostream 然而,我仍然缺少的是例如
虽然在我的生成脚本中,我已经包含了你提到的
每当我尝试转到stdio.h时生成标签“libc6”文件后,它会说“E426:tag not found:stdlib”。 这是我在.vimrc中另外包含的内容,以便使所有这3个标记文件可见。
我不是专家但是我可以说这在某种程度上有助于提升但不适用于libc6-dev。有人可以帮我解决问题 这是与上面相同的代码 sudo apt-file update
吠强祷豪硅
里找到了这个https://gist.github.com/959484。看起来它包含所有C(c / c ++ / obj-c变体)的保留字。我猜有些对所有编译器都有效,当然这些都适用于gcc。 至于找出要忽略的其他符号,在OS X上我会使用nm来转储有问题的库的符号,将所有标记为private('s'而不是'S'的符号)添加到我的符号列表中无视。 Linux有类似的库转储工具吗? 希望这很有用。
浮凰量
我还创建了以下忽略列表,用于为libstdc ++生成标记文件(Ubuntu 14.04上的GCC 4.8.2)(同样,这是-I选项的输入):
我改变
为:
表示它看起来像一个函数,应该被忽略。 当然,我也为Boost创建了一个,但我认为在某人有需要之前我不会发布它。