Как скрипт vim (clang_complete) может выполнить функцию, шаблон?

В файле clang_complete.txt(файл справки) он показывает их в файле clang_complete-compl_kinds:

2.Completion kinds                  *clang_complete-compl_kinds*
Because libclang provides a lot of information about completion, there are
some additional kinds of completion along with standard ones (see >
 :help complete-items for details):

'+' - constructor
'~' - destructor
'e' - enumerator constant
'a' - parameter ('a' from "argument") of a function, method or template
'u' - unknown or buildin type (int, float, ...)
'n' - namespace or its alias
'p' - template ('p' from "pattern")

вопрос:
1. Я не могу получить доступ к полным элементам (нет этого файла)
2. может кто-нибудь сказать мне, как использовать параметр "+" "а" и так далее.
3. или вы можете сказать мне, как показать параметры функции, когда (набрано.

Спасибо!
(прости мой плохой английский)

1 ответ

Прошло много времени, но я отвечу, чтобы помочь будущим посетителям.

Я не до конца понимаю ваши вопросы, но я отвечу на третий. Clang complete запускает автоматическое предложение / завершение только при написании ".", "->" или "::", но вы можете запустить его вручную.

Я использую это таким образом. В этом источнике:

#include <iostream>
using namespace std;

void ExampleFunc (float foo, int &bar)
{
    cout << foo;
    bar++;
}

int main (int argc, char **argv)
{
    int a(0);
    Exa[cursor here]

    return 0;
}

Написание "Exa" вы можете нажать <C-X><C-U> и вы получите окно предварительного просмотра с:

Example (float foo, int &bar)

и окно завершения (то же самое, что появляется при нажатии <C-N> (CTRL-N) в режиме вставки) с:

Example f void Example(float foo, int &bar)

Если есть несколько совпадений, вы можете перейти вниз или вверх с <C-N> или же <C-P> и в комплекте с <CR> (войти).

Завершение не является идеальным, но оно должно работать для многих других случаев, например (как вы упомянули) шаблонов:

#include <vector>
using namespace std;

int main (int argc, char **argv)
{
    struct MyType {int asdf; float qwer;};
    vector<MyType> vec;
    ve  // suggestions after <C-X><C-U>: 
        //     "vec v vector<MyType> vec" v is for variable
        //     "vector p vector<Typename _Tp>" p is for pattern (template)
        //     constructors with its parameters, etc.

    vec.    // auto-fired suggestions: all std::vector methods
    vec[0]. // auto-fired suggestions: "asdf", "qwer" and MyType methods

    return 0;
}

Если эти примеры не работают для вас, вы не правильно установили плагин.

Кстати, вы можете карту <C-X><C-U> на другой ярлык.

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