2015-10-30 2 views
0

Я знаю, что если я хочу автодополнению я могу использоватьВызов Readline() 's Tab Завершение Непосредственно

char *readline (const char *prompt); 

, и я получу автодополнению в то время как он работает, но что, если у меня уже есть строка, что я хотите завершить? Есть ли определенная функция в библиотеке readline, которую я могу вызвать напрямую, и отправить строку в качестве параметра, чтобы она выполняла завершение табуляции на нем?

Я прочитал много исходного кода complete.c, чтобы найти основную функцию, с которой я мог бы отправить строку без везения.

+1

Вы можете посмотреть ссылку [this] (http://web.mit.edu/gnu/doc/html/rlman_2.html#SEC36) для получения информации о том, как. – Linus

+0

Это выглядит интересно, я не уверен, что если какая-либо из функций позволь мне дать им строку для завершения. Самый большой rl_complete() нуждается в int ignore и int invoking_key, который, как мне кажется, исходит из текущей readline? –

ответ

1

Я не знаю точно, где находится API-интерфейс C, но со стороны BASH-вызова из-за вещей, compgen может принимать «частичный» вход.

Основная проблема заключается в том, что «частичный» ввод обычно предоставляется для сценариев оболочки, расположенных в/usr/share/bash-completion/completions/«program», поэтому есть вероятность, что то, что вы ищете, C API ", но вывод одного или нескольких сценариев bash.

+0

Но если я строю оболочку, я предполагаю, что это не поможет, не так ли? –