Используйте альтернативный файл.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 файл.

Другие вопросы по тегам