как скрипт vim (clang_complete) может выполнить функцию, шаблон? - PullRequest
3 голосов
/ 13 марта 2012

В файле 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. Я не могу получить доступ кcomplete-items (no this file)
2. может кто-нибудь сказать мне, как использовать параметр '+' 'a' и т. д.
3. или вы можете сказать мне, как показать параметры функции, когда (естьнабрал.

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

1 Ответ

0 голосов
/ 01 февраля 2014

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

Я не до конца понимаю ваши вопросы, но я отвечу на третий.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> с другими ярлыками.

...