如何通过boost减少clang_complete搜索的时间

时间:2012-05-10 20:12:30

标签: vim boost clang code-completion clang-complete

我喜欢和vim一起使用clang。

我一直有的一个问题就是每当我加入boost时,每当我输入“。”时clang就会通过boost库。在一个对象名称之后。这需要5-10秒。

由于我没有对boost标题进行更改,有没有办法通过boost缓存搜索? 如果没有,有没有办法从自动完成搜索中删除提升?

更新(1)以回应adaszko的回答 后 :让g:clang_use_library = 1

  1. 我输入变量的名称。
  2. 我按^ N. Vim开始搜索boost树。它自动完成变量。
  3. 我按“。”并得到以下错误:
  4. Error detected while processing function ClangComplete:
    line   35:
    Traceback (most recent call last):
    Press ENTER or type command to continue
    Error detected while processing function ClangComplete:
    line   35:
      File "<string>", line 1, in <module>
    Press ENTER or type command to continue
    Error detected while processing function ClangComplete:
    line   35:
    NameError: name 'vim' is not defined
    Press ENTER or type command to continue
    Error detected while processing function ClangComplete:
    line   40:
    E121: Undefined variable: l:res
    Press ENTER or type command to continue
    Error detected while processing function ClangComplete:
    line   40:
    E15: Invalid expression: l:res
    Press ENTER or type command to continue
    Error detected while processing function ClangComplete:
    line   58:
    E121: Undefined variable: l:res
    Press ENTER or type command to continue
    Error detected while processing function ClangComplete:
    line   58:
    E15: Invalid expression: l:res
    Press ENTER or type command to continue
    

    ...并且没有自动强制

    更新(2) 不确定clang_complete是否应该解决boost的问题。没有插件的vim会搜索boost。 超级用户有一个answer,可以使用set include=^\\s*#\\s*include\ \\(<boost/\\)\\@!

    通过提升目录评论搜索

3 个答案:

答案 0 :(得分:4)

所以,你至少有两个选择。选项#1是设置g:clang_use_library1。以下是:help g:clang_use_library所说的内容:

Instead of calling the clang/clang++ tool use libclang directly. This
gives access to many more clang features. Furthermore it automatically
caches all includes in memory. Updates after changes in the same file will
therefore be a lot faster.

这需要Python Vim集成的工作设置。

选项#2是将g:clang_complete_auto设置为您禁用的0->.::之后自动完成,可以使用<C-x> <C-o>代替 随时手动调用clang_complete。

我同时使用它们。

答案 1 :(得分:0)

来自here

,您可以将以下内容添加到.vimrc

:set include=^\\s*#\\s*include\ \\(<boost/\\)\\@!

(通过boost缓存搜索的问题仍然是开放的)

答案 2 :(得分:0)

我已经对clang_complete进行了很多性能增强,您可以查看问题#187。由于非优化代码,问题的很大一部分只是弱脚本性能。