
Show HN: Linenoise NG – GNU Readline Replacement, with UTF8 and Windows (BSD) - fceller
https://github.com/arangodb/linenoise-ng
======
jimrandomh
I'm all for replacing readline. It's an ancient, very closely linked to the
everyday experience of using the command line, and not very good. I want my
REPLs to have things like syntax highlighting and decent tab completion UI,
and readline has positioned itself to have a monopoly on the ability to
implement these things but failed to deliver.

But this isn't addressing the real problem, which is that readline gets
conjoined with the programs that use it. So if I want to write my own line
editor, I have to significantly modify every program I want to use it in,
which is enough of an obstacle that I won't do it (and neither will others).
Nevermind more difficult architectural problems, like making editing local
when on high-latency connections. Still, having a BSD-licensed line editor to
start from may be helpful for whoever takes on that project some day.

~~~
yyin
"But this isn't addressing the real problem..."

Well, he addressed a real problem in my opinion: readline is too large and too
complicated for many uses.

I used hping in the old days; while I'm not a Redis user (I use cdb and kdb+
for key/value stores), I really appreciate linenoise. I use it everyday.

I thank the author for a very useful contribution.

------
cmsd2
there are a lot of forks of linenoise out there now.

this one looks good, but it's a big task to pick through all the divergent
copies of the code and figure out which ones have genuine improvements and
which ones are now rotting.

there's a rust one too which i recently added mingw/msvc support to. that's
actually an example of how this splintering could be causing problems because
we've just vendored some upstream version of the native c code and changes may
be difficult to send back upstream.

~~~
fceller
That is one of the reason, why I renamed it the LINENOISE NG. The interface is
compatible with the original LINENOISE, but it works on linux, Mac and Windows
and it supports UTF-8.

~~~
kazinator
Too bad about the C++, though; my condolences.

(The original authors should have made the header comment "against the idea
that a line editing lib needs to be 20,000 lines of C code, _or any quantity
of C++_ ".)

------
kazinator
Fork of linenoise in the TXR language:

[http://www.kylheku.com/cgit/txr/log/linenoise](http://www.kylheku.com/cgit/txr/log/linenoise)

Doc:

[http://www.nongnu.org/txr/txr-
manpage.html#N-025AAA27](http://www.nongnu.org/txr/txr-
manpage.html#N-025AAA27)

These changes are in a different direction. I don't have windows or UTF-8
support, though. I started a branch to convert it to use wchar_t. Maybe I can
cherry pick some things out of NG.

------
melling
How about predictive typing? It would be helpful if something modern learned
what I frequently type.

[http://papersdb.cs.ualberta.ca/~papersdb/uploaded_files/712/...](http://papersdb.cs.ualberta.ca/~papersdb/uploaded_files/712/paper_korvemaker00predicting.pdf)

------
davexunit
All of this to get around the GPL. Boo!

~~~
lobster_johnson
I wonder why that was necessary, since NetBSD's libedit exists in a portable
form. It is (or was) the default on OS X.

[http://thrysoee.dk/editline/](http://thrysoee.dk/editline/)

Edit: libedit is mentioned in the readme, and it's implied that the reason for
this other library is code size.

~~~
fceller
Another reason is Windows. Even READLINE breaks when used on Windows with
UTF-8 characters.

------
dorfsmay
Can it switch between emacs and vi mode (like Deadline)?

~~~
dschep
Was that a typo? I've never heard of deadline and that's a pretty un-google-
able word. GNU Readline has Emacs & Vi mode.

~~~
_ph_
While replying to this thread, my browser keeps autocorrecting "readline" to
"deadline". So a case where technology makes us write correctly spelled
nonsense :).

