dundalek / closh

Bash-like shell based on Clojure
Eclipse Public License 1.0
1.62k stars 66 forks source link

Autocompletion issue #129

Open jeroenvandijk opened 5 years ago

jeroenvandijk commented 5 years ago

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)
johannesloetzsch commented 4 years ago

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

jeroenvandijk commented 4 years ago

@johannesloetzsch I cannot reproduce the problem with the current master (8a2fc67ce1152aa6c52c0250e247104581d1eff1), 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. )

dundalek commented 4 years ago

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

jeroenvandijk commented 4 years ago

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