OK, thank you very much chaps. I shall investigate! On Monday, 23 September 2013, John Jacobsen wrote:
> The JLine story is indeed confusing. I believe > https://github.com/jline/jline2 is the current one you want ([jline > "2.11"] in your project.clj deps). See the forthcoming Clojure Cookbook > recipe<https://github.com/clojure-cookbook/clojure-cookbook/blob/master/local-io/console/read-unbuffered-keystroke/read-unbuffered-keystroke.asciidoc>. > If that recipe (or its trivial extension to echo repeated > characters) indeed does not work correctly for you, now would be an > excellent time to let people know so there is a chance to correct it before > it goes to print! > > John > > On Sunday, September 22, 2013 7:30:29 AM UTC-5, juan.facorro wrote: >> >> According to the JLine <https://github.com/jline/jline>'s source code >> (v1.0) in >> UnixTerminal.java<https://github.com/jline/jline/blob/jline-1.0/src/main/java/jline/UnixTerminal.java#L355>, >> echo is disabled with the command *stty -echo* which disables >> all echoing in the console (just tried it in a terminal since I wasn't >> familiar with this command). >> >> There are two projects for JLine in github <https://github.com/jline>, JLine >> and JLine2. The latter seems to be actively mantained, but after digging a >> little I found the same command is used when disabling echo in Unix >> terminals, see >> here<https://github.com/jline/jline2/blob/master/src/main/java/jline/UnixTerminal.java#L89>and >> here<https://github.com/jline/jline2/blob/master/src/main/java/jline/internal/TerminalLineSettings.java#L76> >> . >> >> I don't know of a way you could go around that, but maybe someone can >> help or suggest an alternative. >> >> HTH, >> >> J >> >> On Saturday, September 21, 2013 12:49:29 AM UTC+8, Simon Brooke wrote: >>> >>> I've discovered some interesting behaviour - not necessarily a bug, and >>> (if it is a bug) not necessarily a bug in Clojure. >>> >>> Essentially, to emulate a 1970s user interface, I want to read single >>> key strokes from the console. I've found two recipes online, both using the >>> JLine java package: >>> >>> http://stackoverflow.com/**questions/13435541/reading-** >>> unbuffered-keyboard-input-in-**clojure<http://stackoverflow.com/questions/13435541/reading-unbuffered-keyboard-input-in-clojure> >>> http://stackoverflow.com/**questions/3225025/single-** >>> character-console-input-in-**java-clojure<http://stackoverflow.com/questions/3225025/single-character-console-input-in-java-clojure> >>> >>> One of these recipes uses Terminal.getTerminal(), the other uses new >>> ConsoleReader(). What happens in my context (Debian on 64 bit Intel) is >>> that as soon as an instance of either class is instantiated, echoing to the >>> console ceases. If you do (obviously, with the jline jar on the classpath): >>> >>> (import 'jline.Terminal) >>> (def term (Terminal/getTerminal)) >>> (.initializeTerminal term) >>> (.enableEcho term) >>> >>> >>> (or the equivalent things with a ConsoleReader), every keystroke is >>> echoed twice. But if you do >>> >>> user=> ((..ddiissaabblleeEEcchhoo tteerrmm)) >>> ^Jnil >>> >>> one single further character gets echoed and then nothing more, unless >>> you type (blindly) (.enableEcho term), when the double-echoing behaviour >>> resumes. This is consistent - on my Debian box - with Clojure 1.2, Clojure >>> 1.3, and Clojure 1.5.1, all using jline 1.0. I haven't yet compiled up a >>> little Java app to find out what happens without Clojure, and I haven't >>> tried compiling a little command-line Clojure app, because I want to be >>> able to read single characters in the context of the REPL, so if, as I >>> hypothesise, jline is fighting with the REPL, proving whether it works >>> outwith the context of the REPL doesn't really help me. >>> >>> Has anyone else seen this behaviour? Is there any solution? >>> >>> -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to > clojure@googlegroups.com<javascript:_e({}, 'cvml', > 'clojure@googlegroups.com');> > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com <javascript:_e({}, 'cvml', > 'clojure%2bunsubscr...@googlegroups.com');> > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to a topic in the > Google Groups "Clojure" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/clojure/IDzqEQKkDD0/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > clojure+unsubscr...@googlegroups.com <javascript:_e({}, 'cvml', > 'clojure%2bunsubscr...@googlegroups.com');>. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.