Используйте альтернативный файл.clang_complete
Плагин clang_complete по умолчанию считывает флаги компилятора из файлов в vim path
переменная. Это не обязательно желательно, так как path
используется для других целей, и это означает, что, возможно, придется повозиться с переменной, отследить местоположение .clang_complete
файлы и т. д. Было бы намного проще, если бы была возможность, например, просто указать файлы для включения.
Нет, но есть это:
clang_complete-auto_user_options g:clang_auto_user_options
Установить источники для пользовательских параметров, передаваемых в Clang. Доступные источники:
[...]
{что-нибудь} иначе будет обработано как источник пользовательской опции следующим образом: clang_complete попытается загрузить функцию автозагрузки с именем getopts#{any}#getopts, которая затем сможет изменить переменную b:clang_user_options. Смотрите справку по автозагрузке, если вы не знаете, что это такое.
Итак, я указал:
let g:clang_auto_user_options = "clangcompl"
И создал файл autoload/getopts/clangcompl.vim
с функцией:
function clangcompl#getopts ()
Эта функция загружается, но clang_complete не использует ее, и я получаю ошибку:
Error detected while processing function <SNR>14_ClangCompleteInit..LoadUserOptions:
line 20:
E117: Unknown function: getopts#clangcompl#getopts
Это мой первый набег в vimscript, поэтому любые советы приветствуются. Где я ошибся?
1 ответ
Вам нужно включить относительный путь, а не только имя файла и функции, в объявление:
function getopts#clangcompl#getopts ()
let files = expand("~/.vim/clang_opts/*", 0, 1)
for f in files
let opts = readfile(f)
for o in opts
let b:clang_user_options .= " ".o
endfor
endfor
endfunction
Это будет использовать что-нибудь в ~/.vim/clang_opts
как .clang_complete
файл.