Я пытался заставить работать завершение табуляции. Я очень смущен и не знаю, что делать. Не могли бы вы взглянуть на мой код и сказать мне, как я могу его исправить.
Кстати, я использовал rl_attempted_completion_function
, так как я получил его из онлайн-учебника, но это функция C++. Какую функцию я могу использовать, чтобы заменить его, не внося изменений.
Спасибо
static char** completion( const char * text , int start, int end){
char **matches;
matches = (char **)NULL;
if (start == 0)
matches = rl_completion_matches ((char*)text, &generator);
return (matches);
}
char* generator(const char* text, int state) {
int index, len;
char *comm;
if (!state) {
index = 0;
len = (int)strlen (text);
}
while ( (*comm = newEnv[index])) {
index++;
if (strncmp (comm, text, len) == 0)
return ((comm));
}
return NULL;
}
int main (int argc, char * argv[]) {
using_history();
rl_readline_name = basename(argv[0]);
rl_attempted_completion_function = completion;
while ( readline(">> ")!= NULL )
rl_bind_key('\t',rl_complete);
return 0;
}
rl_attempted_completion_function
явно означает Readline, например. Библиотека чтения GNU. - person osgx   schedule 30.08.2011