Как уменьшить время поиска clang_complete через буст

Мне нравится использовать clang с vim.

Единственная проблема, с которой я всегда сталкиваюсь, заключается в том, что всякий раз, когда я включаю boost, clang проходит через библиотеку boost каждый раз, когда я ставлю «.» после имени объекта. Это занимает 5-10 секунд.

Поскольку я не вношу изменений в заголовки boost, есть ли способ кэшировать поиск через boost? Если нет, есть ли способ убрать ускорение из поиска автозаполнения?

обновить (1) в ответ на ответ Адашко после :let g:clang_use_library = 1

  1. Я набираю имя переменной.
  2. Я нажимаю ^N. Vim начинает поиск по дереву повышения. он автоматически дополняет переменную.
  3. я нажимаю "." и получить следующие ошибки:
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 решить проблему с повышением. vim без плагинов делает поиск через boost. у суперпользователя есть ответ на комментарий искать через каталоги повышения с помощью set include=^\\s*#\\s*include\ \\(<boost/\\)\\@!


person kirill_igum    schedule 10.05.2012    source источник
comment
Каково ваше значение переменной Vim g: clang_use_library?   -  person adaszko    schedule 11.05.2012
comment
@adaszko :let g:clang_use_library возвращает g:clang_use_library #0   -  person kirill_igum    schedule 11.05.2012


Ответы (3)


Итак, у вас есть как минимум два варианта. Вариант № 1 — установить g:clang_use_library на 1. Вот что говорит об этом :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 в любое время.

Я использую оба.

person adaszko    schedule 11.05.2012
comment
Возможно, это улучшится в будущих версиях. - person adaszko; 11.05.2012
comment
Мне кажется, это материал для отдельного вопроса на StackOverflow :-) - person adaszko; 11.05.2012

из здесь вы можете добавить следующее на ваш .vimrc:

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

(вопрос кэширования поиска через boost пока открыт)

person kirill_igum    schedule 11.05.2012