Bachmann1234/java9_kernel

Code Completion

Opened this issue · 10 comments

I know that code completion works in JShell. Is there any way to get it working in the notebooks?

With MetaKernel, it already does code completion for variables, methods, and classes. That is possible because /vars, /methods, and /classes are commands. If there were a way to ask for code completions in general, then you could do it for any string. This would be one benefit of writing a kernel in Java. Without doing that, you need a way to get that info from the command line.

@dsblank Ah! That makes sense. I was trying to complete Sys to System. This would def be a nice feature.

Does JShell support code completion? This project is not using (http://geophile.com/jshell/) Its using the Java 9 Repel which is a completely different shell. I dont think the Java 9 Repel (also called jshell annoyingly) supports code completion.

I could be wrong. I am not export on this stuff honestly. This project has honestly gotten more attention than I expected

Wait, this uses Kulla which is JShell??

Edit: I think, perhaps, I may have been spreading the wrong info. I don't think that's the kulla jar, which is the link you provided (I think?) In any case I think we are all using the kulla jar which contains JShell (or is hell i don't know haha).

So Kulla is a jar that is linked to Java 9s repel which is called jshell (http://openjdk.java.net/projects/kulla/)

In the issue you opened earlier you linked this project (http://geophile.com/jshell/) but its not the same thing. Or at least I am fairly sure its not.

Big thing is kulla only works on Java 9 while the link above works on Java 1x. and has not been updated since 2000

I mean, perhaps im the confused one. :-P

Ha yes indeed and I am the perpetrator of such misinformation. I have given myself 40 lashings as penance.

hey man, No worries. alrighty im gonna close this one as "Outside the scope"

Au Contraire my friend, kulla does support code completion.

I think code completion could be done. Currently there are two completions in kulla/JShell:

  • TAB, turns Sys into System, and System.o into System.out
  • SHIFT+TAB turns System.out.println( into this output:
-> System.out.println(
java.io.PrintStream.println(boolean arg0)
java.io.PrintStream.println(char arg0)
java.io.PrintStream.println(int arg0)
java.io.PrintStream.println(long arg0)
java.io.PrintStream.println(float arg0)
java.io.PrintStream.println(double arg0)
java.io.PrintStream.println(char[] arg0)
java.io.PrintStream.println(java.lang.String arg0)
java.io.PrintStream.println(java.lang.Object arg0)

The current java9_kernel uses pexpect to send and receive commands. It should be possible to either:

  1. send a string with TAB or SHIFT+TAB and get back results
  2. change kulla to add new command(s), like /complete to do what TAB and SHIFt+TAB do

Ok OK. Reopened. :-)