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.

Reply via email to