Request For Enhancements

Some features I'd like very much to see (in order of priority):

  • A way to specify VM options to the REPL.  Specifically I really really need to set java.library.path.
  • Make it work in Maia.
  • Faster response times.  It seems sluggish at the moment.  Although having just upgraded my machine this isn't as noticeable as it was.
  • Improved debugging.  Would be great to have a repl available at any given stack frame.
  • Completions for clojure forms.


Great work so far.

4 comments
Comment actions Permalink

Hi, Glen.

Thank you for kind words. I think, support fo Maia will be provided in a couple of week when I'll create a branch (plugin API's of IDEA 8 and 9 are a little bit different). As for completion for clojure forms, please, name any of them which are not supported and I'll fix it.

With best regards,
Ilya

0
Comment actions Permalink

Actually completion seems to be working fine.  I'm not sure why I thought that it wasn't.  So given that it works I'll add some more wish list items.  It would be great to see the accepted parameters as well as ctrl-q to lookup the documentation.

This might be outside the scope of La Clojure but once thing that drives me nuts with Clojure is the convoluted stack traces it produces.  It would be great it La Clojure could untangle the stacktrace before presenting it to the user.  Take a look at the stracktrace below:


Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.UnsupportedOperationException: nth not supported on this type: PersistentArrayMap (gamelib-test.clj:0)
    at clojure.lang.Compiler.eval(Compiler.java:4543)
    at clojure.lang.Compiler.load(Compiler.java:4857)
    at clojure.lang.Compiler.loadFile(Compiler.java:4824)
    at clojure.main$load_script__5833.invoke(main.clj:206)
    at clojure.main$script_opt__5864.invoke(main.clj:258)
    at clojure.main$main__5888.doInvoke(main.clj:333)
    at clojure.lang.RestFn.invoke(RestFn.java:413)
    at clojure.lang.Var.invoke(Var.java:346)
    at clojure.lang.AFn.applyToHelper(AFn.java:173)
    at clojure.lang.Var.applyTo(Var.java:463)
    at clojure.main.main(main.java:39)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.UnsupportedOperationException: nth not supported on this type: PersistentArrayMap
    at clojure.lang.LazySeq.seq(LazySeq.java:46)
    at clojure.lang.RT.seq(RT.java:436)
    at clojure.core$seq__3133.invoke(core.clj:103)
    at clojure.core$dorun__3998.invoke(core.clj:1772)
    at user$fn__240.invoke(gamelib-test.clj:98)
    at clojure.lang.MultiFn.invoke(MultiFn.java:157)
    at user$game_loop__243.invoke(gamelib-test.clj:107)
    at user$run__258.invoke(gamelib-test.clj:148)
    at user$eval__261.invoke(gamelib-test.clj:151)
    at clojure.lang.Compiler.eval(Compiler.java:4532)
    ... 15 more
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.UnsupportedOperationException: nth not supported on this type: PersistentArrayMap
    at clojure.lang.LazySeq.seq(LazySeq.java:46)
    at clojure.lang.RT.seq(RT.java:436)
    at clojure.core$seq__3133.invoke(core.clj:103)
    at clojure.core$map__3815$fn__3817.invoke(core.clj:1502)
    at clojure.lang.LazySeq.seq(LazySeq.java:41)
    ... 24 more
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.UnsupportedOperationException: nth not supported on this type: PersistentArrayMap
    at clojure.lang.LazySeq.seq(LazySeq.java:46)
    at clojure.lang.LazySeq.withMeta(LazySeq.java:33)
    at clojure.lang.LazySeq.withMeta(LazySeq.java:17)
    at clojure.core$with_meta__3152.invoke(core.clj:170)
    at user$fn__209.invoke(gamelib-test.clj:70)
    at clojure.lang.MultiFn.invoke(MultiFn.java:157)
    at user$fn__203.invoke(gamelib-test.clj:52)
    at clojure.lang.MultiFn.invoke(MultiFn.java:157)
    at clojure.core$map__3815$fn__3817.invoke(core.clj:1503)
    at clojure.lang.LazySeq.seq(LazySeq.java:41)
    ... 28 more
Caused by: java.lang.RuntimeException: java.lang.UnsupportedOperationException: nth not supported on this type: PersistentArrayMap
    at clojure.lang.LazySeq.seq(LazySeq.java:46)
    at clojure.lang.RT.seq(RT.java:436)
    at clojure.core$seq__3133.invoke(core.clj:103)
    at clojure.core$filter__3845$step__3847.invoke(core.clj:1535)
    at clojure.core$filter__3845$fn__3851.invoke(core.clj:1539)
    at clojure.lang.LazySeq.seq(LazySeq.java:41)
    ... 37 more
Caused by: java.lang.UnsupportedOperationException: nth not supported on this type: PersistentArrayMap
    at clojure.lang.RT.nth(RT.java:800)
    at clojure.core$nth__3578.invoke(core.clj:873)
    at user$fn__209$iter__211__213$fn__214.invoke(gamelib-test.clj:60)
    at clojure.lang.LazySeq.seq(LazySeq.java:41)
    ... 42 more


It's a big mess and this is not even a particularly complicated program.  Ideally it would be great to see a simplified stack trace that just showed the lines in my code and the function named involved without all the internal clojure stuff and without the nested exception mess.  This may be out-of-scope but it would be a great help if it could be done.

0
Comment actions Permalink

I don't know if this is an enhancement request or an existing feature that I just don't know how to use, but how do I get the repl not to lock up, for instance, when I am missing a parenthesis at the end of a function and I hit enter?  It seems to just lock up on me and all I can do is close up the repl.  Also having history in the repl would be nice, so that when I hit up, I get the previous command.

0
Comment actions Permalink

Im also stuck with no ability to specifiy library path for tokyo cabinet, I guess that the only choice is to dig up the code.
Any pointers where to start from?

0

Please sign in to leave a comment.