www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - stdin.readln line editing and recall with up arrow

reply Daren Scot Wilson <darenw darenscotwilson.com> writes:
stdin.readln() works fine until I, out of habit, use the up arrow 
to recall an earlier input and the left/right to move around and 
change a character.   How do I get that to work?
Feb 24 2023
parent reply "Richard (Rikki) Andrew Cattermole" <richard cattermole.co.nz> writes:
On 25/02/2023 6:36 PM, Daren Scot Wilson wrote:
 stdin.readln() works fine until I, out of habit, use the up arrow to 
 recall an earlier input and the left/right to move around and change a 
 character.   How do I get that to work?
Not with that module. You can either use GNU readline itself, or Adam's version within arsd.
Feb 24 2023
parent reply Daren Scot Wilson <darenw darenscotwilson.com> writes:
On Saturday, 25 February 2023 at 05:41:48 UTC, Richard (Rikki) 
Andrew Cattermole wrote:
 On 25/02/2023 6:36 PM, Daren Scot Wilson wrote:
 stdin.readln() works fine until I, out of habit, use the up 
 arrow to recall an earlier input and the left/right to move 
 around and change a character.   How do I get that to work?
Not with that module. You can either use GNU readline itself, or Adam's version within arsd.
I went with readline. Left/right arrows work, but up arrow still does not recall earlier commands. Maybe I need also a separate input history thing?
Feb 25 2023
next sibling parent reply "Richard (Rikki) Andrew Cattermole" <richard cattermole.co.nz> writes:
On 25/02/2023 9:45 PM, Daren Scot Wilson wrote:
 I went with readline.  Left/right arrows work, but up arrow still does 
 not recall earlier commands. Maybe I need also a separate input history 
 thing?
https://tiswww.case.edu/php/chet/readline/readline.html#Basic-Behavior
Feb 25 2023
parent Daren Scot Wilson <darenw darenscotwilson.com> writes:
On Saturday, 25 February 2023 at 08:47:42 UTC, Richard (Rikki) 
Andrew Cattermole wrote:
 On 25/02/2023 9:45 PM, Daren Scot Wilson wrote:
 I went with readline.  Left/right arrows work, but up arrow 
 still does not recall earlier commands. Maybe I need also a 
 separate input history thing?
https://tiswww.case.edu/php/chet/readline/readline.html#Basic-Behavior
Hmm... the add_history(), or maybe it's rl_add_history(), function seems to have been in ancient readline versions but at some point all line history code was taken out to be its own library. https://tiswww.case.edu/php/chet/readline/rltop.html https://tiswww.case.edu/php/chet/readline/history.html Arch Linux drags in both readline.so and history.so in its readline package. No one notices! Trying import gnu.history; fails since there's no distinct 'history' package (yet) and Dub doesn't drag it in along with readline. D can call C and link to anything in /usr/lib easily. Done. It works! How does D know to link to the libhistory.so library? I didn't say "history" anywhere. But it works. extern (C) { void add_history(const char*); } I'm tempted to make a history package and submit it to DUB. Maybe. After dinner...
Feb 28 2023
prev sibling parent bachmeier <no spam.net> writes:
On Saturday, 25 February 2023 at 08:45:27 UTC, Daren Scot Wilson 
wrote:
 On Saturday, 25 February 2023 at 05:41:48 UTC, Richard (Rikki) 
 Andrew Cattermole wrote:
 On 25/02/2023 6:36 PM, Daren Scot Wilson wrote:
 stdin.readln() works fine until I, out of habit, use the up 
 arrow to recall an earlier input and the left/right to move 
 around and change a character.   How do I get that to work?
Not with that module. You can either use GNU readline itself, or Adam's version within arsd.
I went with readline. Left/right arrows work, but up arrow still does not recall earlier commands. Maybe I need also a separate input history thing?
If you start your program with rlwrap, for example `rlwrap cmd`, you'll get that for free.
Feb 25 2023