Как скрипт 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>
на другой ярлык.