Есть ли простая альтернатива Readline?

В проекте, над которым я работаю, я пытаюсь заставить его принимать пользовательские команды и отображать историю со стрелкой вверх. Я стремлюсь сохранить этот проект свободным от зависимостей, и я не хочу требовать, чтобы люди также устанавливали файлы разработки readline только для компиляции моего проекта. Кто-нибудь знает о простой замене GNU Readline, которая предоставляет только простые функции?


person Justin Poliey    schedule 10.12.2009    source источник


Ответы (6)


В большинстве систем установлен readline, так что я не вижу в этом большой проблемы.

Во-вторых, я не думаю, что есть какая-то замена библиотеке GNU Readline. Вам придется придерживаться этого. :(

Редактировать 11.05.2016: этот ответ устарел, и любое изменение, которое я бы сделал, было бы почти полностью заимствовано из других, более правильных ответов. Резюме: см. linenoise и editline для современных альтернатив readline.

person dwlz    schedule 10.12.2009
comment
Да, похоже, я не обхожу его стороной. Я проверил альтернативы, такие как Editline и libtecla, но они не удовлетворяют простому требованию. Мне просто придется свалить это. - person Justin Poliey; 11.12.2009
comment
Я бы не хотел этого говорить. clisp является первым один для перехода на GPL из-за readline. здесь находится статья о readline и GPL. - person Yasushi Shoji; 26.08.2012
comment
Я бы обновил этот ответ - ни в Windows, ни в Mac OS X не установлен readline - это очень большая часть пользователей! - person Chris Jefferson; 11.05.2016
comment
Вероятно, следует просто удалить мой ответ ... Я думаю, что он немного устарел. ???? Изменить: оказывается, вы не можете удалить принятый ответ. - person dwlz; 12.05.2016
comment
@КрисДжефферсон Ха. Ты прав. Mac OS X фактически включает код совместимости для кода, который запрашивает строку чтения, сопоставляя вызовы с строкой редактирования. Интересно. - person uliwitness; 12.05.2016

Строка редактирования. Он имеет лицензию в стиле BSD.

EDIT: Старые версии строки редактирования были довольно простыми. Вот один с всего двумя файлами C и заголовком, всего около 1500 строк кода. Мы используем его в течение многих лет.

person Jason Orendorff    schedule 10.12.2009

Я нашел один. antirez из Redis придумал linenoise, гораздо более простую альтернативу.

person Justin Poliey    schedule 22.03.2010
comment
Я уверен, что пользователям, не владеющим английским языком, понравится, когда ваша программа ругается на текст, который они пытаются ввести на своем родном языке.... - person R.. GitHub STOP HELPING ICE; 13.02.2011

BusyBox содержит код редактирования командной строки, похожий на readline, но намного меньше и проще, с полной поддержкой UTF-8. Вероятно, было бы легко сделать его независимой библиотекой.

person R.. GitHub STOP HELPING ICE    schedule 12.02.2011

Еще одна альтернатива — библиотека editline. Из README:

Библиотека editline была создана Simmule Turner и Rich Salz еще в 1992 году. В то время, когда они решили распространять код под авторским правом "C News-like", подробности см. в файле LICENSE.

[...]

Эта версия библиотеки editline является ответвлением исходных кодов Minix3. Другие известные версии, часто основанные на исходной публикации comp.sources.unix:

Здесь собраны самые интересные патчи и исправления ошибок из каждого форка.

person Yasushi Shoji    schedule 26.08.2012

editline(libedit) пока не поддерживает многобайтовые символы.

Я также согласен с Dan Loewenherz, библиотека readline широко распространена. Например, большинство дистрибутивов Linux поставляются с bash с readline. Большинство дистрибутивов Python также поставляется с readline. Если вашему проекту нужна библиотека, подобная readline, рекомендуется использовать библиотеку GNU readline, так как это популярный выбор, и пользователи могут уже установить ее в ОС.

person weakish    schedule 19.12.2009
comment
По состоянию на 24 апреля 2010 г. строка редактирования может быть построена с поддержкой utf-8 с использованием ./configure --enable-widec. - person Graham Miln; 05.06.2014
comment
По состоянию на 18 июня 2016 г. строка редактирования всегда создается с поддержкой Unicode (wide-char/UTF-8), а флаг --enable-widec устарел. - person AndreyT; 04.10.2016
comment
If your project needs a readline-like library, it's a good idea to use GNU readline library since it's a popular choice and users may have it installed on the OS already. Обратите внимание, что сам readline и, таким образом, объединенная производная работа (т. е. двоичный файл) находятся под лицензией GPL, которая может подходить или не подходить для конкретного проекта. - person Ivan Vučica; 30.10.2018