Bachmann1234 / java9_kernel

An ipython kernel for java 9
Apache License 2.0
72 stars 17 forks source link

Code Completion #12

Open Qtrain opened 8 years ago

Qtrain commented 8 years ago

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

dsblank commented 8 years ago

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.

Qtrain commented 8 years ago

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

Bachmann1234 commented 8 years ago

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

Qtrain commented 8 years ago

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).

Bachmann1234 commented 8 years ago

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

Qtrain commented 8 years ago

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

Bachmann1234 commented 8 years ago

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

Qtrain commented 8 years ago

Au Contraire my friend, kulla does support code completion.

dsblank commented 8 years ago

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

-> 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
Bachmann1234 commented 8 years ago

Ok OK. Reopened. :-)