Там есть удобный способ иметь многострочный ввод в libedit/editline

Использование libedit / editline и попытка найти хороший способ сделать многострочный ввод / редактирование. Цель - клиент SQL, где запросы часто занимают несколько строк и заканчиваются ;,

я могу позвонить el_getsи обрабатывать каждую строку ввода, останавливаясь, когда я вижу завершающий ;, Я даже могу объединить их и сохранить их как одну запись в el_history - и она будет правильно обращаться к ним при использовании стрелок для прокрутки истории.

Однако при вводе команды и после начала новой строки я больше не могу использовать стрелки для перемещения вверх и редактирования предыдущей строки. Например:

prompt> SELECT * FROM table
WHERE 

На этом этапе я хотел бы иметь возможность использовать стрелку вверх, чтобы двигаться вверх и редактировать текст, уже введенный в первой строке. Это возможно? Как можно это сделать? Я предполагаю, что используя el_gets в данном случае это неправильно, так как это приведет к удалению строки из буферизации строки редактирования, но я не вижу альтернативного API, который бы работал.

Мысли?

0 ответов

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