dundalek/closh

Autocompletion issue

jeroenvandijk opened this issue · 4 comments

In closh jvm

When I type "(ki" and press TAB I get the following exception:

 (kiApr 11, 2019 12:51:14 PM org.jline.utils.Log logr
INFO: Error while finding completion candidates
java.lang.IllegalStateException: Attempting to call unbound fn: #'compliment.core/completions
	at clojure.lang.Var$Unbound.throwArity(Var.java:45)
	at clojure.lang.AFn.invoke(AFn.java:36)
	at clojure.lang.Var.invoke(Var.java:388)
	at rebel_readline.clojure.service.local$fn__2532.invokeStatic(local.clj:74)
	at rebel_readline.clojure.service.local$fn__2532.invoke(local.clj:70)
	at clojure.lang.MultiFn.invoke(MultiFn.java:239)
	at rebel_readline.clojure.line_reader$completions.invokeStatic(line_reader.clj:150)
	at rebel_readline.clojure.line_reader$completions.invoke(line_reader.clj:146)
	at closh.zero.frontend.rebel$clojure_completer$fn__2683.invoke(rebel.clj:67)
	at closh.zero.frontend.rebel.proxy$java.lang.Object$Completer$5a11ab5d.complete(Unknown Source)
	at org.jline.reader.impl.LineReaderImpl.doComplete(LineReaderImpl.java:3765)
	at rebel_readline.jline_api.proxy$org.jline.reader.impl.LineReaderImpl$IAtom$IDeref$4ac0129f.doComplete(Unknown Source)
	at org.jline.reader.impl.LineReaderImpl.completeWord(LineReaderImpl.java:3700)
	at rebel_readline.jline_api.proxy$org.jline.reader.impl.LineReaderImpl$IAtom$IDeref$4ac0129f.completeWord(Unknown Source)
	at org.jline.reader.impl.LineReaderImpl.callWidget(LineReaderImpl.java:661)
	at rebel_readline.jline_api.proxy$org.jline.reader.impl.LineReaderImpl$IAtom$IDeref$4ac0129f.callWidget(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:167)

Seems like the error was fixed in the meantime. @jeroenvandijk can you please check if you can reproduce the problem with the current master?

@johannesloetzsch I cannot reproduce the problem with the current master (8a2fc67), so I guess it is fixed. Tested on Mac Osx via:

clojure -Sdeps '{:deps {closh {:git/url "https://github.com/dundalek/closh.git" :sha "8a2fc67ce1152aa6c52c0250e247104581d1eff1"}}}' -m closh.zero.frontend.rebel

(Building the uberjar via boot uberjar failed locally. So I tried the above. )

That's curious. I would be also interested in the boot uberjar failure, if it is some error we could fix.

Oh I think a made a wrong observation. Actually it does work on a first try. However when I do

boot uberjar-sci
boot uberjar

Thus without cleaning up the target dir, I get the error below:

➜  closh git:(master) ✗ java -jar target/closh-zero.jar
$ (kException in thread "Thread-1" Syntax error compiling at (compliment/core.clj:1:1).
	at clojure.lang.Compiler.load(Compiler.java:7647)
	at clojure.lang.RT.loadResourceScript(RT.java:381)
	at clojure.lang.RT.loadResourceScript(RT.java:372)
	at clojure.lang.RT.load(RT.java:463)
	at clojure.lang.RT.load(RT.java:428)
	at clojure.core$load$fn__6824.invoke(core.clj:6126)
	at clojure.core$load.invokeStatic(core.clj:6125)
	at clojure.core$load.doInvoke(core.clj:6109)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.core$load_one.invokeStatic(core.clj:5908)
	at clojure.core$load_one.invoke(core.clj:5903)
	at clojure.core$load_lib$fn__6765.invoke(core.clj:5948)
	at clojure.core$load_lib.invokeStatic(core.clj:5947)
	at clojure.core$load_lib.doInvoke(core.clj:5928)
	at clojure.lang.RestFn.applyTo(RestFn.java:142)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$load_libs.invokeStatic(core.clj:5985)
	at clojure.core$load_libs.doInvoke(core.clj:5969)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$require.invokeStatic(core.clj:6007)
	at clojure.core$require.doInvoke(core.clj:6007)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at rebel_readline.utils$load_slow_deps_BANG_$fn__2132.invoke(utils.clj:50)
	at clojure.lang.AFn.run(AFn.java:22)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalAccessError: cache-context does not exist
	at clojure.core$refer.invokeStatic(core.clj:4249)
	at clojure.core$refer.doInvoke(core.clj:4217)
	at clojure.lang.RestFn.applyTo(RestFn.java:139)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$load_lib.invokeStatic(core.clj:5966)
	at clojure.core$load_lib.doInvoke(core.clj:5928)
	at clojure.lang.RestFn.applyTo(RestFn.java:142)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$load_libs.invokeStatic(core.clj:5985)
	at clojure.core$load_libs.doInvoke(core.clj:5969)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$require.invokeStatic(core.clj:6007)
	at clojure.core$require.doInvoke(core.clj:6007)
	at clojure.lang.RestFn.invoke(RestFn.java:482)
	at compliment.core$eval2769$loading__6706__auto____2770.invoke(core.clj:6)
	at compliment.core$eval2769.invokeStatic(core.clj:6)
	at compliment.core$eval2769.invoke(core.clj:6)
	at clojure.lang.Compiler.eval(Compiler.java:7176)
	at clojure.lang.Compiler.eval(Compiler.java:7165)
	at clojure.lang.Compiler.load(Compiler.java:7635)
	... 25 more
Nov 04, 2019 11:01:10 PM org.jline.utils.Log logr
INFO: Error while finding completion candidates
java.lang.IllegalStateException: Attempting to call unbound fn: #'compliment.core/completions
	at clojure.lang.Var$Unbound.throwArity(Var.java:45)
	at clojure.lang.AFn.invoke(AFn.java:36)
	at clojure.lang.Var.invoke(Var.java:388)
	at rebel_readline.clojure.service.local$fn__3156.invokeStatic(local.clj:74)
	at rebel_readline.clojure.service.local$fn__3156.invoke(local.clj:70)
	at clojure.lang.MultiFn.invoke(MultiFn.java:239)
	at rebel_readline.clojure.line_reader$completions.invokeStatic(line_reader.clj:150)
	at rebel_readline.clojure.line_reader$completions.invoke(line_reader.clj:146)
	at closh.zero.frontend.rebel$clojure_completer$fn__3443.invoke(rebel.clj:70)
	at closh.zero.frontend.rebel.proxy$java.lang.Object$Completer$5a11ab5d.complete(U