cursive-ide / cursive

Cursive: The IDE for beautiful Clojure code
574 stars 7 forks source link

`java.lang.RuntimeException: EOF while reading` when trying to use `-e` in REPL's Parameters #2186

Open p-himik opened 5 years ago

p-himik commented 5 years ago

Cursive v1.8.2-eap4-2019.1. Steps to reproduce:

  1. Create a working REPL run configuration.
  2. Add some -e option with a space in its value to the "Parameters" input field of the configuration. E.g. -e "(println 1)".
  3. Try to run the configuration.

It ends up in:

Connecting to local nREPL server...
Clojure 1.10.0
nREPL server started on port 34745 on host 127.0.0.1
Exception in thread "main" clojure.lang.LispReader$ReaderException: java.lang.RuntimeException: EOF while reading, starting at line 1
    at clojure.lang.LispReader.read(LispReader.java:314)
    at clojure.lang.LispReader.read(LispReader.java:216)
    at clojure.lang.LispReader.read(LispReader.java:210)
    at clojure.core$read.invokeStatic(core.clj:3766)
    at clojure.core$read.invokeStatic(core.clj:3741)
    at clojure.main$eval_opt$fn__9082.invoke(main.clj:464)
    at clojure.main$eval_opt.invokeStatic(main.clj:464)
    at clojure.main$eval_opt.invoke(main.clj:459)
    at clojure.main$initialize.invokeStatic(main.clj:485)
    at clojure.main$script_opt.invokeStatic(main.clj:510)
    at clojure.main$script_opt.invoke(main.clj:507)
    at clojure.main$main.invokeStatic(main.clj:598)
    at clojure.main$main.doInvoke(main.clj:561)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.lang.Var.applyTo(Var.java:705)
    at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException: EOF while reading, starting at line 1
    at clojure.lang.Util.runtimeException(Util.java:221)
    at clojure.lang.LispReader.readDelimitedList(LispReader.java:1405)
    at clojure.lang.LispReader$ListReader.invoke(LispReader.java:1243)
    at clojure.lang.LispReader.read(LispReader.java:285)
    at clojure.lang.LispReader.read(LispReader.java:220)
    at clojure.lang.LispReader.access$200(LispReader.java:41)
    at clojure.lang.LispReader$WrappingReader.invoke(LispReader.java:771)
    at clojure.lang.LispReader.read(LispReader.java:285)
    ... 15 more

The issue is that apparently Cursive splits the string passed to "Parameters" by whitespace and then escapes each section. It prevents any kind of quotes from working. The example above effectively feeds Clojure three options: -e, "(println, and )". Note that any option without spaces works just fine.

shinichy commented 2 years ago

It would be great if Cursive supports -e option. @cursive-ide Any update?