The Autoproxy Plugin - Part II
Briefly

"Some months ago, I ran into a small problem with the Scala REPL (Read-Evaluate-Print-Loop) under MS Windows. This was using JLine, which hooks a native library into the command window to find the window size and to support key bindings such as tab completion. JLine is a great solution, except when you need to run the REPL in a nested process with redirected I/O, or connect to it remotely via a protocol such as Telnet. In such cases you have to sacrifice functionality."
"Seeing the situation, I felt that Scala could benefit from a swing-based REPL. This would not need JLine to support the full range of functionality in 2.8, would be embeddable, and would allow for connecting to a remote JVM. It also looked like a good project to stretch my growing experience of coding in Scala and gave me a chance to experiment with a bit of swing in the language."
The name of the annotation is open for debate and an alternative @mixin annotation is being trialled. JLine hooks a native library into the command window to determine window size and support key bindings such as tab completion. JLine fails when the REPL runs in a nested process with redirected I/O or when connecting remotely via protocols like Telnet, forcing the loss of functionality. A Swing-based REPL would avoid JLine, be embeddable and enable connections to a remote JVM. Work stalled due to limited demand, missing JEditorPane/JTextPane ports in scala.swing, and timing constraints for the 2.8 release. The encountered code showed extensive method and property delegation to a peer. Traits exist to pull in methods and properties and Scala uses "with" to mix in traits.
Read at Artima
Unable to calculate read time
[
|
]