Giter Site home page Giter Site logo

clojure-emacs / cider-nrepl Goto Github PK

View Code? Open in Web Editor NEW
668.0 37.0 175.0 3.38 MB

A collection of nREPL middleware to enhance Clojure editors with common functionality like definition lookup, code completion, etc.

Home Page: https://docs.cider.mx/cider-nrepl

Clojure 98.37% Shell 0.20% Java 0.13% Makefile 1.27% Emacs Lisp 0.04%
clojure nrepl nrepl-middleware cider

cider-nrepl's People

Contributors

alexander-yakushev avatar arichiardi avatar arrdem avatar bbatsov avatar benedekfazekas avatar cartmanishere avatar cichli avatar ckoparkar avatar cskksc avatar dpsutton avatar expez avatar gonewest818 avatar grammati avatar gtrak avatar hugoduncan avatar jeffvalk avatar jpmonettas avatar liquidz avatar malabarba avatar mallt avatar plexus avatar r0man avatar rksm avatar sanjayl avatar severeoverfl0w avatar tatut avatar vemv avatar vspinu avatar xiongtx avatar yuhan0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cider-nrepl's Issues

Add receiver object to Java instance method arglists

It'd be nice if we injected an extra param in the arglists of Java (and JavaScript) instance methods, namely the receiver object. Without it the arglists will always be off-by-one and won't be very helpful. Here's an example - String#substring has arglists [int] and [int int], but in reality those are [string int] and [string int int]. We can take a shortcut and prepend everywhere a param named jObject or receiver or we can derive the receiver from the class name. I'm not sure what the best approach for this would be.

//cc @jeffvalk

Prefer dicts to lists in bencode

Since I'm already reworking the elisp bencode implementation in #25, I think it might be a good time to consider serializing of maps into bencoded dicts instead of the current strategy of lists. I have already confirmed the tools.nrepl bencode impl does the right thing with maps.

In the clojure->elisp scenario, I think it makes more conceptual sense, which makes things easier to debug, and I can make emacs do the right thing (back to alists) at deserialization time.

As a downside, this might complicate the elisp->clojure portions (though that probably won't get very nested) and how that gets turned into a map clojure-side. It might make sense to keep the old style serialization viable in this case.

IRC convo: https://gist.github.com/gtrak/9899238

Latest version of cider-nrepl 0.1.0-SNAPSHOT jar causing REPL to hang

Completions used to work fine when using ac-nrepl with the cider-nrepl jar in clojure.

In the latest version of the SNAPSHOT it appears that we've migrated over to complement for clojure completions which I understand is better option in the long run.

The REPL is consistently hanging if I enable completions. I can also get completions in the clojure source buffer (with cider enabled) to hang, but that problem is intermittent.

The issue exists regardless of whether I continue with ac-nrepl or switch over to ac-cider-complement from the emacs side for completions.

The version string is as follows:

; CIDER 0.6.0alpha (package: 20140419.142) (Java 1.8.0, Clojure 1.6.0, nREPL 0.2.3)

Please note that the issue exists in Java 7 and Java 8 also Clojure 1.5.1 and Clojure 1.6.0.

Completion is being turned on simply via

(add-hook 'cider-mode-hook 'ac-nrepl-setup)

Another request I'd have is that a change as big as the switching out of the completions engine warrants an up version of the jar. That way, it's possible for people to downgrade if they run into issues.

Emacs unable to find installed cider-nrepl middleware

I apologise if this seems like a newbie question.

My emacs has a blank init file, and only the cider plugin installed.
I tried editing a lein new app generated core.clj file. Calling M-x cider-inspect reports
Can't find required inspector middleware. Please, install cider-nrepl.

I can't figure what I'm doing wrong. Could someone please help?

Here's my leiningen profile at ~/.lein/profiles.clj :

{:user
 {:dependencies [[compliment "0.0.3"]]
  :plugins [[cider/cider-nrepl "0.1.0-SNAPSHOT"]]}}

Here are the plugins in my test emacs setup for this case:

cider-20140318.1539
clojure-mode-20140317.641
dash-20140308.656
epl-20140316.544
pkg-info-20140313.513

Emacs version
GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.8.6) of 2014-01-03 on gold, modified by Debian

Leiningen version:
Leiningen 2.3.4 on Java 1.7.0_51 OpenJDK 64-Bit Server VM

Error while compiling the plugin

I noticed that (clojure.tools.namespace.repl/refresh) blows up on the plugin with:

IllegalArgumentException No implementation of method: :make-reader of protocol: #'clojure.java.io/IOFactory found for class: nil  clojure.core/-cache-protocol-fn (core_deftype.clj:541)

Same thing happens when one tries to load interactively the file. I guess the resource path is not properly set up if this is ran outside lein. Maybe we can extract the version in a more universal manner? @gtrak

wrap-info crashing freezing nrepl

First let me say that it was hard to know what was going on from emacs. The experience was that the Cider repl simply froze. I got more info by starting lein repl from the command line and then attaching from emacs. In that case I could see the exception on the command line. Pretty painful.

The bug occurs when emacs automatically tries to get the argument info for a function (in this case the stroke function which was coming from seesaw). This seems to exercise wrap-info which appears to be the source of the problem

opencv.display=> stroke
#<graphics$stroke seesaw.graphics$stroke@332c1f9e>

But when I typed (stroke and then waited a few seconds, emacs would freeze. After looking at the stack trace below I disable wrap-info and then things started working again.

Below is the exception. Note that [cider/cider-nrepl "0.6.1-SNAPSHOT"] displays this stack trace, but [cider/cider-nrepl "0.7.0-SNAPSHOT"] does not display a stack trace (so there is no debugging info). Either way, emacs freezes. So upgrading was not solution.

opencv.display=> May 14, 2014 2:03:10 PM clojure.tools.logging$eval422$fn__426 invoke
SEVERE: Unhandled REPL handler exception processing message {:id 28, :op info, :session 2ba498a1-670c-4fb5-ba6a-c92c239ed84c, :ns opencv.display, :symbol stroke}
java.lang.IllegalArgumentException: Cannot write value of type class java.lang.Double
    at clojure.tools.nrepl.bencode$eval94$fn__95.invoke(bencode.clj:326)
    at clojure.lang.MultiFn.invoke(MultiFn.java:231)
    at clojure.tools.nrepl.bencode$eval129$fn__130.invoke(bencode.clj:398)
    at clojure.lang.MultiFn.invoke(MultiFn.java:231)
    at clojure.tools.nrepl.bencode$eval129$fn__130.invoke(bencode.clj:398)
    at clojure.lang.MultiFn.invoke(MultiFn.java:231)
    at clojure.tools.nrepl.bencode$eval119$fn__120.invoke(bencode.clj:382)
    at clojure.lang.MultiFn.invoke(MultiFn.java:231)
    at clojure.tools.nrepl.bencode$eval119$fn__120.invoke(bencode.clj:382)
    at clojure.lang.MultiFn.invoke(MultiFn.java:231)
    at clojure.tools.nrepl.bencode$eval129$fn__130.invoke(bencode.clj:398)
    at clojure.lang.MultiFn.invoke(MultiFn.java:231)
    at clojure.tools.nrepl.bencode$eval129$fn__130.invoke(bencode.clj:398)
    at clojure.lang.MultiFn.invoke(MultiFn.java:231)
    at clojure.tools.nrepl.transport$bencode$fn__546.invoke(transport.clj:103)
    at clojure.tools.nrepl.transport.FnTransport.send(transport.clj:28)
    at cider.nrepl.middleware.info$info_reply.invoke(info.clj:119)
    at cider.nrepl.middleware.info$wrap_info$fn__2174.invoke(info.clj:127)
    at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__709.invoke(middleware.clj:17)
    at cider.nrepl.middleware.complete$wrap_complete$fn__1944.invoke(complete.clj:31)
    at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__709.invoke(middleware.clj:17)
    at cider.nrepl.middleware.classpath$wrap_classpath$fn__1435.invoke(classpath.clj:21)
    at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__709.invoke(middleware.clj:17)
    at ritz.nrepl.middleware.apropos$wrap_apropos$fn__2983.invoke(apropos.clj:30)
    at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__709.invoke(middleware.clj:17)
    at ritz.nrepl.middleware.javadoc$wrap_javadoc$fn__2918.invoke(javadoc.clj:26)
    at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__709.invoke(middleware.clj:17)
    at clojure.tools.nrepl.server$handle_STAR_.invoke(server.clj:18)
    at clojure.tools.nrepl.server$handle$fn__1066.invoke(server.clj:27)
    at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836)
    at clojure.lang.AFn.call(AFn.java:18)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

bencode map keys + keywords/syms ambiguity

I've been going back and forth on this mentally... I found a problem that is not easy to resolve in an intelligent way..

This causes a stacktrace due to the 'registry' symbol destructuring...

Also we can see keywords are also being str'd directly, leaving a colon.

{:arglists
(({registry ":registry", :as "services"}
"session-id"
"user"
"steps-fn")),

I guess I should encode symbols/keywords as fully-qualified (when-needed) strings. There is no way to disambiguate them, but that's better than nothing.

If we try to keep the colon for all nested keywords, we'll run into a problem at the top-level, which is easy enough to solve by simply not calling transform-value at that top-level.

java.lang.ClassCastException: clojure.lang.Symbol cannot be cast to java.lang.String
at clojure.tools.nrepl.bencode$string_GT_payload.invoke(bencode.clj:172)
at clojure.core$juxt$fn__4173.invoke(core.clj:2368)
at clojure.core$map$fn__4207.invoke(core.clj:2487)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
at clojure.lang.LazySeq.seq(LazySeq.java:60)
at clojure.lang.RT.seq(RT.java:484)
at clojure.core$seq.invoke(core.clj:133)
at clojure.core.protocols$seq_reduce.invoke(protocols.clj:30)
at clojure.core.protocols$fn__6026.invoke(protocols.clj:54)
at clojure.core.protocols$fn__5979$G__5974__5992.invoke(protocols.clj:13)
at clojure.core$reduce.invoke(core.clj:6177)
at clojure.core$into.invoke(core.clj:6229)
at clojure.tools.nrepl.bencode$eval1233$fn__1234.invoke(bencode.clj:392)
at clojure.lang.MultiFn.invoke(MultiFn.java:231)
at clojure.tools.nrepl.bencode$eval1223$fn__1224.invoke(bencode.clj:382)
at clojure.lang.MultiFn.invoke(MultiFn.java:231)
at clojure.tools.nrepl.bencode$eval1223$fn__1224.invoke(bencode.clj:382)
at clojure.lang.MultiFn.invoke(MultiFn.java:231)
at clojure.tools.nrepl.bencode$eval1233$fn__1234.invoke(bencode.clj:398)
at clojure.lang.MultiFn.invoke(MultiFn.java:231)

Jump to jar broken on win7

On a win7 machine at work I get this: c:/C:/Users/<my user>/.m2/repository/org/clojure/clojure/1.6.0/clojure-1.6.0.jar:clojure/edn.clj when I try to jump to clojure.edn. The drive letter appears twice, resulting in an invalid path.

Remove :arglists key, in favor of :arglists-str

I'm afraid we have a unrecoverable issue here. Creates freezing client-side (we could kludge-fix that by moving the exception handler further up).

To demonstrate:

Say you've got a data structure like:
([{{{id :entity/id, :as body} :results} :body, :as response}])

Here's a bencode roundtrip function:

(defn round-trip [data]
    (let [encoded (let [b (java.io.ByteArrayOutputStream.)]
                    (clojure.tools.nrepl.bencode/write-bencode b data)
                    (str b))
          _ (println encoded)
          decoded (let [s (java.io.PushbackInputStream. (java.io.StringBufferInputStream. encoded))]
                    (#'clojure.tools.nrepl.transport/<bytes (clojure.tools.nrepl.bencode/read-bencode s)))]
      decoded))

Here's how it normally works:

> (round-trip [1 2 3 4])
li1ei2ei3ei4ee
[1 2 3 4]

Here's what it does for our data structure:

ClassCastException clojure.lang.PersistentArrayMap cannot be cast to java.lang.String  clojure.tools.nrepl.bencode/string>payload (bencode.clj:172)

Essentially, we can't use maps wherever there is a possibility of having non-strings as map-keys due to bencode itself, and there's no general strategy for dealing with this case on the backend, right? Wikipedia says 'All keys must be byte strings'. All I can think of as an alternative is to simply serialize data-keys (map?/sequential?) into strings. I will test out the ramifications of that.

Anyways, since arglists is the only thing using arbitrarily nested data, it's easy enough to fix for now. Cider will have to 'read' the :arglists-str key for eldoc bits, and I'll remove the :arglists here, but now we have a good rationale for why we should do it that way.

@bbatsov @tpope?

'classpath' op.

Simply return the classpath using java.classpath.

Can be used for jump-to-def for remote repls (not sure if this currently works in cider?), could be useful in general.

arglists in info op are problematic

cider.nrepl.middleware.util.misc> (transform-value '([]))
(nil)

This ends up cutting off data on the elisp side after an arglists entry, which can include valuable file/line information. Should decide on a canonical representation, whether strings or lists of strings or so on.

cider-nrepl throws exception on Immutant 1.1.x init

Goal: Be able to use cider-nrepl with Immutant, both locally on OS X and against running server on Linux.

Ref discussion in clojure-emacs/cider#615. The latest 0.7.0-snapshots of cider-nrepl give exception during Immutant startup. May be due to a dependency on tools.jar?

If this analysis is correct, would it be feasible to enable the relevant features only if tools.jar is actually present, and otherwise only support the non-tools.jar depending things?

This is both locally using lein immutant run on OS X with Oracle JDK 1.8.0_05, and on a remote server on Linux with OpenJDK 1.7.0_55.

To reproduce, the following should work:
git clone https://github.com/terjesb/cider-nrepl-exception
cd cider-nrepl-exception
lein immutant install
lein immutant deploy
lein immutant run

With :plugins and :repl-options in the project.clj it fails with exception below.
If I comment out :plugins and :repl-options, it works (curl http://localhost:8080/cider-nrepl-exception returns Hello)

09:46:07,726 INFO  [immutant.repl] (pool-5-thread-1) Starting nREPL for cider-nrepl-exception at 127.0.0.1:4245
09:46:09,474 ERROR [org.jboss.msc.service.fail] (pool-5-thread-1) MSC00001: Failed to start service jboss.deployment.unit."cider-nrepl-exception.clj".immutant.core.application-initializer: org.jboss.msc.service.StartException in service jboss.deployment.unit."cider-nrepl-exception.clj".immutant.core.application-initializer: java.lang.ClassNotFoundException: com.sun.javadoc.ClassDoc, compiling:(cider/nrepl/middleware/util/java/parser.clj:1:1)
    at org.projectodd.polyglot.core.AsyncService$1.run(AsyncService.java:52) [polyglot-core.jar:1.20.0]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [rt.jar:1.8.0_05]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_05]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_05]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_05]
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_05]
Caused by: java.lang.ClassNotFoundException: com.sun.javadoc.ClassDoc, compiling:(cider/nrepl/middleware/util/java/parser.clj:1:1)
    at clojure.lang.Compiler.load(Compiler.java:7142) [clojure.jar:]
    at clojure.lang.RT.loadResourceScript(RT.java:370) [clojure.jar:]
    at clojure.lang.RT.loadResourceScript(RT.java:361) [clojure.jar:]
    at clojure.lang.RT.load(RT.java:440) [clojure.jar:]
    at clojure.lang.RT.load(RT.java:411) [clojure.jar:]
    at clojure.core$load$fn__5066.invoke(core.clj:5641) [clojure.jar:]
    at clojure.core$load.doInvoke(core.clj:5640) [clojure.jar:]
    at clojure.lang.RestFn.invoke(RestFn.java:408) [clojure.jar:]
    at clojure.core$load_one.invoke(core.clj:5446) [clojure.jar:]
    at clojure.core$load_lib$fn__5015.invoke(core.clj:5486) [clojure.jar:]
    at clojure.core$load_lib.doInvoke(core.clj:5485) [clojure.jar:]
    at clojure.lang.RestFn.applyTo(RestFn.java:142) [clojure.jar:]
    at clojure.core$apply.invoke(core.clj:626) [clojure.jar:]
    at clojure.core$load_libs.doInvoke(core.clj:5524) [clojure.jar:]
    at clojure.lang.RestFn.applyTo(RestFn.java:137) [clojure.jar:]
    at clojure.core$apply.invoke(core.clj:626) [clojure.jar:]
    at clojure.core$require.doInvoke(core.clj:5607) [clojure.jar:]
    at clojure.lang.RestFn.applyTo(RestFn.java:137) [clojure.jar:]
    at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3553) [clojure.jar:]
    at clojure.lang.Compiler$BodyExpr.eval(Compiler.java:5800) [clojure.jar:]
    at clojure.lang.Compiler$IfExpr.eval(Compiler.java:2608) [clojure.jar:]
    at clojure.lang.Compiler$DefExpr.eval(Compiler.java:417) [clojure.jar:]
    at clojure.lang.Compiler.eval(Compiler.java:6708) [clojure.jar:]
    at clojure.lang.Compiler.load(Compiler.java:7130) [clojure.jar:]
    at clojure.lang.RT.loadResourceScript(RT.java:370) [clojure.jar:]
    at clojure.lang.RT.loadResourceScript(RT.java:361) [clojure.jar:]
    at clojure.lang.RT.load(RT.java:440) [clojure.jar:]
    at clojure.lang.RT.load(RT.java:411) [clojure.jar:]
    at clojure.core$load$fn__5066.invoke(core.clj:5641) [clojure.jar:]
    at clojure.core$load.doInvoke(core.clj:5640) [clojure.jar:]
    at clojure.lang.RestFn.invoke(RestFn.java:408) [clojure.jar:]
    at clojure.core$load_one.invoke(core.clj:5446) [clojure.jar:]
    at clojure.core$load_lib$fn__5015.invoke(core.clj:5486) [clojure.jar:]
    at clojure.core$load_lib.doInvoke(core.clj:5485) [clojure.jar:]
    at clojure.lang.RestFn.applyTo(RestFn.java:142) [clojure.jar:]
    at clojure.core$apply.invoke(core.clj:626) [clojure.jar:]
    at clojure.core$load_libs.doInvoke(core.clj:5524) [clojure.jar:]
    at clojure.lang.RestFn.applyTo(RestFn.java:137) [clojure.jar:]
    at clojure.core$apply.invoke(core.clj:626) [clojure.jar:]
    at clojure.core$require.doInvoke(core.clj:5607) [clojure.jar:]
    at clojure.lang.RestFn.invoke(RestFn.java:805) [clojure.jar:]
    at cider.nrepl.middleware.info$eval4748$loading__4958__auto____4749.invoke(info.clj:1)
    at cider.nrepl.middleware.info$eval4748.invoke(info.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6703) [clojure.jar:]
    at clojure.lang.Compiler.eval(Compiler.java:6692) [clojure.jar:]
    at clojure.lang.Compiler.load(Compiler.java:7130) [clojure.jar:]
    at clojure.lang.RT.loadResourceScript(RT.java:370) [clojure.jar:]
    at clojure.lang.RT.loadResourceScript(RT.java:361) [clojure.jar:]
    at clojure.lang.RT.load(RT.java:440) [clojure.jar:]
    at clojure.lang.RT.load(RT.java:411) [clojure.jar:]
    at clojure.core$load$fn__5066.invoke(core.clj:5641) [clojure.jar:]
    at clojure.core$load.doInvoke(core.clj:5640) [clojure.jar:]
    at clojure.lang.RestFn.invoke(RestFn.java:408) [clojure.jar:]
    at clojure.core$load_one.invoke(core.clj:5446) [clojure.jar:]
    at clojure.core$load_lib$fn__5015.invoke(core.clj:5486) [clojure.jar:]
    at clojure.core$load_lib.doInvoke(core.clj:5485) [clojure.jar:]
    at clojure.lang.RestFn.applyTo(RestFn.java:142) [clojure.jar:]
    at clojure.core$apply.invoke(core.clj:626) [clojure.jar:]
    at clojure.core$load_libs.doInvoke(core.clj:5524) [clojure.jar:]
    at clojure.lang.RestFn.applyTo(RestFn.java:137) [clojure.jar:]
    at clojure.core$apply.invoke(core.clj:626) [clojure.jar:]
    at clojure.core$require.doInvoke(core.clj:5607) [clojure.jar:]
    at clojure.lang.RestFn.invoke(RestFn.java:408) [clojure.jar:]
    at immutant.util$require_resolve.invoke(util.clj:129)
    at immutant.repl$start_nrepl$fn__404.invoke(repl.clj:73)
    at clojure.core$map$fn__4245.invoke(core.clj:2557) [clojure.jar:]
    at clojure.lang.LazySeq.sval(LazySeq.java:40) [clojure.jar:]
    at clojure.lang.LazySeq.seq(LazySeq.java:49) [clojure.jar:]
    at clojure.lang.RT.seq(RT.java:484) [clojure.jar:]
    at clojure.core$seq.invoke(core.clj:133) [clojure.jar:]
    at clojure.core$apply.invoke(core.clj:624) [clojure.jar:]
    at immutant.repl$start_nrepl.invoke(repl.clj:71)
    at immutant.repl$init_repl.invoke(repl.clj:116)
    at immutant.runtime$initialize.invoke(runtime.clj:121)
    at clojure.lang.Var.invoke(Var.java:379) [clojure.jar:]
    at org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke(ClojureRuntimeShimImpl.java:91)
    at org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke(ClojureRuntimeShimImpl.java:84)
    at org.immutant.core.ApplicationInitializer.startAsync(ApplicationInitializer.java:49) [immutant-core-module.jar:]
    at org.projectodd.polyglot.core.AsyncService$1.run(AsyncService.java:49) [polyglot-core.jar:1.20.0]
    ... 5 more
Caused by: java.lang.ClassNotFoundException: com.sun.javadoc.ClassDoc
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372) [rt.jar:1.8.0_05]
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) [rt.jar:1.8.0_05]
    at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.8.0_05]
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) [rt.jar:1.8.0_05]
    at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:61) [clojure.jar:]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) [rt.jar:1.8.0_05]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) [rt.jar:1.8.0_05]
    at java.lang.Class.forName0(Native Method) [rt.jar:1.8.0_05]
    at java.lang.Class.forName(Class.java:259) [rt.jar:1.8.0_05]
    at cider.nrepl.middleware.util.java.parser$eval4822$loading__4958__auto____4823.invoke(parser.clj:1)
    at cider.nrepl.middleware.util.java.parser$eval4822.invoke(parser.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6703) [clojure.jar:]
    at clojure.lang.Compiler.eval(Compiler.java:6692) [clojure.jar:]
    at clojure.lang.Compiler.load(Compiler.java:7130) [clojure.jar:]
    ... 83 more

Exception after typing a dot

Hello. I'm having this issue where I open parens, type a dot then my emacs will freeze for many seconds till I mash C-g a bunch of times.
I'm using cider 20140430.838, cider-nrepl 0.7.0-SNAPSHOT and company 20140430.154 (not sure if this one has anything to do).
I connect via M-x cider to a lein repl on my terminal.

I get this exception:

images.server=> ERROR: Unhandled REPL handler exception processing message {:id 291, :op info, :session dfcf8823-ba62-457a-bb2f-b2bd5d66282f, :ns images.db, :symbol .}
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(String.java:646)
    at clojure.lang.Compiler.maybeResolveIn(Compiler.java:6960)
    at clojure.core$ns_resolve.invoke(core.clj:4026)
    at clojure.core$ns_resolve.invoke(core.clj:4023)
    at cider.nrepl.middleware.util.java$resolve_class$fn__1921.invoke(java.clj:167)
    at cider.nrepl.middleware.util.java$resolve_class.invoke(java.clj:167)
    at cider.nrepl.middleware.util.java$resolve_symbol.invoke(java.clj:192)
    at cider.nrepl.middleware.info$info_clj.invoke(info.clj:62)
    at cider.nrepl.middleware.info$info.invoke(info.clj:79)
    at cider.nrepl.middleware.info$info_reply.invoke(info.clj:147)
    at cider.nrepl.middleware.info$wrap_info$fn__2020.invoke(info.clj:155)
    at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__507.invoke(middleware.clj:17)
    at cider.nrepl.middleware.trace$wrap_trace$fn__2891.invoke(trace.clj:35)
    at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__507.invoke(middleware.clj:17)
    at cider.nrepl.middleware.classpath$wrap_classpath$fn__1229.invoke(classpath.clj:21)
    at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__507.invoke(middleware.clj:17)
    at clojure.tools.nrepl.server$handle_STAR_.invoke(server.clj:18)
    at clojure.tools.nrepl.server$handle$fn__862.invoke(server.clj:27)
    at clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1910)
    at clojure.lang.AFn.call(AFn.java:18)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:744)

Stacktrace op doesn't complete

The following stacktrace does not get shown in cider, and causes the repl to hang:

java.net.SocketException: Connection reset
                                           java.net.SocketInputStream.read           SocketInputStream.java:  196
                                           java.net.SocketInputStream.read           SocketInputStream.java:  122
                              sun.reflect.NativeMethodAccessorImpl.invoke0    NativeMethodAccessorImpl.java      
                               sun.reflect.NativeMethodAccessorImpl.invoke    NativeMethodAccessorImpl.java:   57
                           sun.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:   43
                                           java.lang.reflect.Method.invoke                      Method.java:  606
                               clojure.lang.Reflector.invokeMatchingMethod                   Reflector.java:   93
                               clojure.lang.Reflector.invokeInstanceMethod                   Reflector.java:   28
                                             pallet.docker.api/read-record                          api.clj:  225
                                         pallet.docker.api/eval17415/fn/fn                          api.clj:  288
                                            pallet.docker.api/eval17415/fn                          api.clj:  286
                                               clojure.lang.MultiFn.invoke                     MultiFn.java:  231
                                   pallet.docker.execute/docker-exec/fn/fn                      execute.clj:  173
                                         pallet.transport/with-ssh-tunnel*                    transport.clj:  159
                                      pallet.docker.execute/docker-exec/fn                      execute.clj:  171
                                    pallet.docker.execute/with-connection*                      execute.clj:  114
                                         pallet.docker.execute/docker-exec                      execute.clj:  170
                                      pallet.docker.execute-test/eval19482 form-init2392178996539668913.clj:    2
                                                clojure.lang.Compiler.eval                    Compiler.java: 6703
                                                clojure.lang.Compiler.eval                    Compiler.java: 6666
                                                         clojure.core/eval                         core.clj: 2927
                                      clojure.main/repl/read-eval-print/fn                         main.clj:  239
                                         clojure.main/repl/read-eval-print                         main.clj:  239
                                                      clojure.main/repl/fn                         main.clj:  257
                                                         clojure.main/repl                         main.clj:  257
                                                clojure.lang.RestFn.invoke                      RestFn.java: 1096
             clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn           interruptible_eval.clj:   56
                                            clojure.lang.AFn.applyToHelper                         AFn.java:  152
                                                  clojure.lang.AFn.applyTo                         AFn.java:  144
                                                        clojure.core/apply                         core.clj:  624
                                               clojure.core/with-bindings*                         core.clj: 1862
                                                clojure.lang.RestFn.invoke                      RestFn.java:  425
                clojure.tools.nrepl.middleware.interruptible-eval/evaluate           interruptible_eval.clj:   41
clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn           interruptible_eval.clj:  171
                                                      clojure.core/comp/fn                         core.clj: 2402
             clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn           interruptible_eval.clj:  138
                                                      clojure.lang.AFn.run                         AFn.java:   22
                         java.util.concurrent.ThreadPoolExecutor.runWorker          ThreadPoolExecutor.java: 1145
                        java.util.concurrent.ThreadPoolExecutor$Worker.run          ThreadPoolExecutor.java:  615
                                                      java.lang.Thread.run                      Thread.java:  745

The events shown are:

("id" "17" "op" "stacktrace" "session" "9f3f2718-21de-48bd-a9ec-57dbb0abecf6")
(dict
 ("class" . "java.net.SocketException")
 ("id" . "17")
 ("message" . "Connection reset")
 ("session" . "9f3f2718-21de-48bd-a9ec-57dbb0abecf6"))
(dict
 ("class" . "java.net.SocketInputStream")
 ("file" . "SocketInputStream.java")
 ("flags" "java")
 ("id" . "17")
 ("line" . 196)
 ("method" . "read")
 ("name" . "java.net.SocketInputStream/read")
 ("session" . "9f3f2718-21de-48bd-a9ec-57dbb0abecf6")
 ("type" . "java"))

Document/simplify non-lein setup.

Some users have needs that fall outside of the lein setup, eg running from an uberjar, or remote..

Some ideas:
Create convenience functions and a single nrepl handler.
Document raw clojure.tools.nrepl.server commands that'll start up a repl if you've got cider in the classpath.
Document REPL-y setup and whatever other people might want to use.
Fallback to tunnelling tooling over eval if middlewares not present? (probably a terrible idea, but would allow people to use the middlewares in the case a handler is improperly set up, by relying on impl details).

Entry point: https://github.com/clojure/tools.nrepl/blob/master/src/main/clojure/clojure/tools/nrepl/server.clj#L79

Release strategy for cider-nrepl

Hi,

I'd love to work with you guys to sort out a release strategy for the cider-nrepl jar so that we're not dependent on SNAPSHOTS that can change out underneath us.

I understand that there is a coupling with the elisp side as well and would like to figure out how we can provide a relatively stable environment that people can revert to when HEAD is broken.

Thank you.

Cheers,
Achint

Any way to run cider 0.7 without the middleware

Is there any way to run cider 0.7 without the middleware installed into the app? Is there any way, say, if we have the cider jar locally, to dynamically load the /path/to/jar in the classpath, then bounce the nrepl server with the new middleware?

Unable to resolve var: cider.nrepl.middleware.trace/wrap-trace

Hi there,

As of last Friday myself and a couple others on my team have been experiencing this issue with cider-nrepl. Is this a known issue? I get the following stacktrace if I try to start a repl:

Exception in thread "main" java.lang.RuntimeException: Unable to resolve var: cider.nrepl.middleware.trace/wrap-trace in this context, compiling:(/private/var/folders/gx/q3y1xf6x60s78zlp1g249blr0000gn/T/form-init2361553506959370289.clj:1:6479)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6651)
at clojure.lang.Compiler.analyze(Compiler.java:6445)
at clojure.lang.Compiler.analyze(Compiler.java:6406)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3719)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6646)
at clojure.lang.Compiler.analyze(Compiler.java:6445)
at clojure.lang.Compiler.analyze(Compiler.java:6406)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3719)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6646)
at clojure.lang.Compiler.analyze(Compiler.java:6445)
at clojure.lang.Compiler.access$100(Compiler.java:38)
at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6050)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6644)
at clojure.lang.Compiler.analyze(Compiler.java:6445)
at clojure.lang.Compiler.analyze(Compiler.java:6406)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5782)
at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5217)
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3846)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6642)
at clojure.lang.Compiler.analyze(Compiler.java:6445)
at clojure.lang.Compiler.eval(Compiler.java:6700)
at clojure.lang.Compiler.eval(Compiler.java:6693)
at clojure.lang.Compiler.load(Compiler.java:7130)
at clojure.lang.Compiler.loadFile(Compiler.java:7086)
at clojure.main$load_script.invoke(main.clj:274)
at clojure.main$init_opt.invoke(main.clj:279)
at clojure.main$initialize.invoke(main.clj:307)
at clojure.main$null_opt.invoke(main.clj:342)
at clojure.main$main.doInvoke(main.clj:420)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:383)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException: Unable to resolve var: cider.nrepl.middleware.trace/wrap-trace in this context
at clojure.lang.Util.runtimeException(Util.java:221)
at clojure.lang.Compiler$TheVarExpr$Parser.parse(Compiler.java:659)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6644)
... 33 more
REPL server launch timed out.

This is while including cider with the following in our profiles.clj: [cider/cider-nrepl "0.7.0-SNAPSHOT"]

Thanks,
Tom

Jump-to-def for CLJS macros.

To get the info, I think we can simply fall-back to the CLJ impl of info.

To resolve the var, I have to check into the analyzer state, the information is there.

Re-use Ritz bits?

I'm wondering if it makes sense to add 3rd-party middlewares to the default middlewares set up by the lein plugin, specifically Ritz's javadoc which is already supported by cider, or should we reimplement them?

cider-nrepl causes Emacs to freeze and crash

With cider-nrepl added as a plugin in ~/.lein/profiles.clj, the following error will often be thrown and crash Emacs:

ERROR: Unhandled REPL handler exception processing message {:id 11, :op info, :session 381f9a8e-0bfa-45f9-81eb-33c72d71d696, :ns cljs.closure, :symbol :requ}
java.lang.Exception: No namespace: cljs.closure found
at clojure.core$the_ns.invoke(core.clj:3830)
at clojure.core$ns_aliases.invoke(core.clj:3947)
at cider.nrepl.middleware.info$info_clj.invoke(info.clj:39)
at cider.nrepl.middleware.info$info.invoke(info.clj:55)
at cider.nrepl.middleware.info$info_reply.invoke(info.clj:80)
at cider.nrepl.middleware.info$wrap_info$fn__1292.invoke(info.clj:88)
at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__404.invoke(middleware.clj:17)
at cider.nrepl.middleware.complete$wrap_complete$fn__1228.invoke(complete.clj:31)
at clojure.tools.nrepl.middleware$wrap_conj_descriptor$fn__404.invoke(middleware.clj:17)
at clojure.tools.nrepl.server$handle_STAR_.invoke(server.clj:18)
at clojure.tools.nrepl.server$handle$fn__759.invoke(server.clj:27)
at clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1910)
at clojure.lang.AFn.call(AFn.java:18)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:744)

As you can see from this specific error, it was thrown as I was typing "require". It looks like Emacs was attempting to complete the symbol, and this invoked Cider's completion middleware, which hooked into wrap-complete at some point.

Unhandled java.lang.ClassNotFoundException cider.nrepl

After upgrade via ELPA/MELPA to latest:

; CIDER 0.7.0alpha (package: 20140605.854) (Java 1.7.0_51, Clojure 1.5.1, nREPL 0.2.3, cider-nrepl q)

When I perform cider-jack-in, the REPL no longer loads and I get an error Unhandled java.lang.ClassNotFoundException cider.nrepl.

I have had the :plugins [[cider/cider-nrepl "0.6.0"]] entry in my user profile in ~/.lein/profiles.clj for a long time without issue. I also tried putting the plugin in my Leiningen project's own plugins config and I get the same error.

Any hints in the right direction would be greatly appreciated.

Compilation Exception due to ASM?

Running on clojure-1.5.1
cc @jeffvalk
Error loading cider.nrepl.middleware.info: java.lang.RuntimeException: Unable to find static field: ASM4 in interface org.objectweb.asm.Opcodes, compiling:(cider/nrepl/middleware/util/java.clj:68:17)
Exception in thread "main" java.lang.RuntimeException: Unable to resolve var: cider.nrepl.middleware.info/wrap-info in this context, compiling:(/tmp/form-init7656399187810875460.clj:1:3946)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6567)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyze(Compiler.java:6322)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3624)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6562)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyze(Compiler.java:6322)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3624)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6562)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.access$100(Compiler.java:37)
at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:5973)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6560)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyze(Compiler.java:6322)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5708)
at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5139)
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3751)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6558)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.eval(Compiler.java:6616)
at clojure.lang.Compiler.eval(Compiler.java:6609)
at clojure.lang.Compiler.load(Compiler.java:7064)
at clojure.lang.Compiler.loadFile(Compiler.java:7020)
at clojure.main$load_script.invoke(main.clj:294)
at clojure.main$init_opt.invoke(main.clj:299)
at clojure.main$initialize.invoke(main.clj:327)
at clojure.main$null_opt.invoke(main.clj:362)
at clojure.main$main.doInvoke(main.clj:440)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:419)
at clojure.lang.AFn.applyToHelper(AFn.java:163)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException: Unable to resolve var: cider.nrepl.middleware.info/wrap-info in this context
at clojure.lang.Util.runtimeException(Util.java:219)
at clojure.lang.Compiler$TheVarExpr$Parser.parse(Compiler.java:650)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6560)
... 33 more
Subprocess failed

lein repl fails to load

(Sorry for not having time to invest in solving it myself but I'm currently under a very tight schedule :( )

When using the latest version (from github or repository) I get the following error when running lein repl:

rror loading cider.nrepl.middleware.classpath: java.lang.Exception: Unable to resolve symbol: response-for in this context (classpath.clj:12)
WARNING: doc already refers to: #'clojure.core/doc in namespace: compliment.sources.ns-mappings, being replaced by: #'compliment.sources.ns-mappings/doc
WARNING: doc already refers to: #'clojure.core/doc in namespace: compliment.sources.namespaces-and-classes, being replaced by: #'compliment.sources.namespaces-and-classes/doc
Error loading cider.nrepl.middleware.complete: java.lang.Exception: Unable to resolve symbol: response-for in this context (complete.clj:28)
Error loading cider.nrepl.middleware.info: java.io.FileNotFoundException: Could not locate clojure/reflect__init.class or clojure/reflect.clj on classpath:  (java.clj:1)
Error loading cider.nrepl.middleware.inspect: java.lang.Exception: Unable to resolve symbol: ->MapDependencyGraph in this context (dependency.clj:93)
Error loading cider.nrepl.middleware.macroexpand: java.lang.Exception: Unable to resolve symbol: response-for in this context (macroexpand.clj:25)
Error loading cider.nrepl.middleware.resource: java.lang.Exception: Unable to resolve symbol: response-for in this context (resource.clj:13)
Error loading cider.nrepl.middleware.stacktrace: java.lang.Exception: No such var: repl/demunge (stacktrace.clj:31)
Error loading cider.nrepl.middleware.test: java.lang.Exception: No such var: repl/demunge (stacktrace.clj:31)
Error loading cider.nrepl.middleware.trace: java.lang.Exception: Unable to resolve symbol: response-for in this context (trace.clj:14)
Exception in thread "main" java.lang.Exception: Unable to resolve var: cider.nrepl.middleware.classpath/wrap-classpath in this context (form-init1041045194153155143.clj:1)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:5376)
    at clojure.lang.Compiler.analyze(Compiler.java:5190)
    at clojure.lang.Compiler.analyze(Compiler.java:5151)
    at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3057)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:5371)
    at clojure.lang.Compiler.analyze(Compiler.java:5190)
    at clojure.lang.Compiler.analyze(Compiler.java:5151)
    at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3057)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:5371)
    at clojure.lang.Compiler.analyze(Compiler.java:5190)
    at clojure.lang.Compiler.access$100(Compiler.java:35)
    at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:4921)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:5369)
    at clojure.lang.Compiler.analyze(Compiler.java:5190)
    at clojure.lang.Compiler.analyze(Compiler.java:5151)
    at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:4670)
    at clojure.lang.Compiler$FnMethod.parse(Compiler.java:4328)
    at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3173)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:5367)
    at clojure.lang.Compiler.analyze(Compiler.java:5190)
    at clojure.lang.Compiler.eval(Compiler.java:5421)
    at clojure.lang.Compiler.eval(Compiler.java:5415)
    at clojure.lang.Compiler.load(Compiler.java:5857)
    at clojure.lang.Compiler.loadFile(Compiler.java:5820)
    at clojure.main$load_script.invoke(main.clj:221)
    at clojure.main$init_opt.invoke(main.clj:226)
    at clojure.main$initialize.invoke(main.clj:254)
    at clojure.main$null_opt.invoke(main.clj:279)
    at clojure.main$main.doInvoke(main.clj:354)
    at clojure.lang.RestFn.invoke(RestFn.java:421)
    at clojure.lang.Var.invoke(Var.java:369)
    at clojure.lang.AFn.applyToHelper(AFn.java:163)
    at clojure.lang.Var.applyTo(Var.java:482)
    at clojure.main.main(main.java:37)
Caused by: java.lang.Exception: Unable to resolve var: cider.nrepl.middleware.classpath/wrap-classpath in this context
    at clojure.lang.Compiler$TheVarExpr$Parser.parse(Compiler.java:560)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:5369)
    ... 33 more

Thanks in advance

CI tests fail for macroexpand middleware

Current tests for the macroexpand middleware pass on Clojure 1.5, but fail on Clojure 1.6+ due to the use of the -> as the test basis. This macro was reimplemented in 86bfa996 in a way that changes its macroexpansion.

Implement javadoc middleware

Should be similar to ritz's javadoc middleware and will allow us to display javadoc directly in cider. Not sure if we'll be able to extract documentation for JavaScript code as well.

No such var: trace/traced? on 0.7.0-SNAPSHOT

Hi all,

I get the following error when running lein repl with cider-nrepl installed via lein plugins; this used to be working but noww throws this stacktrace:

Any ideas? It seems to have broken recently.

java.lang.RuntimeException: No such var: trace/traced?, compiling:(cider/nrepl/middleware/trace.clj:12:11)
at clojure.lang.Compiler.analyze(Compiler.java:6380)
at clojure.lang.Compiler.analyze(Compiler.java:6322)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3573)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6562)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyze(Compiler.java:6322)
at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2664)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6560)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyze(Compiler.java:6322)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5708)
at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6009)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6560)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6548)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyze(Compiler.java:6322)
at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2669)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6560)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyze(Compiler.java:6322)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5708)
at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6009)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6560)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6548)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6548)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyze(Compiler.java:6322)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5708)
at clojure.lang.Compiler$TryExpr$Parser.parse(Compiler.java:2156)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6560)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyze(Compiler.java:6322)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5708)
at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6009)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6560)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6548)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyze(Compiler.java:6322)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5708)
at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5139)
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3751)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6558)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6548)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.access$100(Compiler.java:37)
at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:529)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6560)
at clojure.lang.Compiler.analyze(Compiler.java:6361)
at clojure.lang.Compiler.analyze(Compiler.java:6322)
at clojure.lang.Compiler.eval(Compiler.java:6623)
at clojure.lang.Compiler.load(Compiler.java:7064)
at clojure.lang.RT.loadResourceScript(RT.java:370)
at clojure.lang.RT.loadResourceScript(RT.java:361)
at clojure.lang.RT.load(RT.java:440)
at clojure.lang.RT.load(RT.java:411)
at clojure.core$load$fn__5018.invoke(core.clj:5530)
at clojure.core$load.doInvoke(core.clj:5529)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5336)
at clojure.core$load_lib$fn__4967.invoke(core.clj:5375)
at clojure.core$load_lib.doInvoke(core.clj:5374)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:619)
at clojure.core$load_libs.doInvoke(core.clj:5413)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:619)
at clojure.core$require.doInvoke(core.clj:5496)
at clojure.lang.RestFn.invoke(RestFn.java:805)
at cider.nrepl$eval486$loading__4910__auto____487.invoke(nrepl.clj:1)
at cider.nrepl$eval486.invoke(nrepl.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:6619)
at clojure.lang.Compiler.eval(Compiler.java:6608)
at clojure.lang.Compiler.load(Compiler.java:7064)
at clojure.lang.RT.loadResourceScript(RT.java:370)
at clojure.lang.RT.loadResourceScript(RT.java:361)
at clojure.lang.RT.load(RT.java:440)
at clojure.lang.RT.load(RT.java:411)
at clojure.core$load$fn__5018.invoke(core.clj:5530)
at clojure.core$load.doInvoke(core.clj:5529)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5336)
at clojure.core$load_lib$fn__4967.invoke(core.clj:5375)
at clojure.core$load_lib.doInvoke(core.clj:5374)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:619)
at clojure.core$load_libs.doInvoke(core.clj:5413)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:619)
at clojure.core$require.doInvoke(core.clj:5496)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at cider_nrepl.plugin$eval480$loading__4910__auto____481.invoke(plugin.clj:1)
at cider_nrepl.plugin$eval480.invoke(plugin.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:6619)
at clojure.lang.Compiler.eval(Compiler.java:6608)
at clojure.lang.Compiler.load(Compiler.java:7064)
at clojure.lang.RT.loadResourceScript(RT.java:370)
at clojure.lang.RT.loadResourceScript(RT.java:361)
at clojure.lang.RT.load(RT.java:440)
at clojure.lang.RT.load(RT.java:411)
at clojure.core$load$fn__5018.invoke(core.clj:5530)
at clojure.core$load.doInvoke(core.clj:5529)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5336)
at clojure.core$load_lib$fn__4967.invoke(core.clj:5375)
at clojure.core$load_lib.doInvoke(core.clj:5374)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:619)
at clojure.core$load_libs.doInvoke(core.clj:5413)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:619)
at clojure.core$require.doInvoke(core.clj:5496)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at leiningen.core.utils$require_resolve.invoke(utils.clj:60)
at leiningen.core.project$apply_middleware.invoke(project.clj:576)
at clojure.core.protocols$fn__6034.invoke(protocols.clj:143)
at clojure.core.protocols$fn__6005$G__6000__6014.invoke(protocols.clj:19)
at clojure.core.protocols$seq_reduce.invoke(protocols.clj:31)
at clojure.core.protocols$fn__6026.invoke(protocols.clj:54)
at clojure.core.protocols$fn__5979$G__5974__5992.invoke(protocols.clj:13)
at clojure.core$reduce.invoke(core.clj:6177)
at leiningen.core.project$apply_middleware.invoke(project.clj:574)
at leiningen.core.project$activate_middleware.invoke(project.clj:595)
at leiningen.core.project$init_project.invoke(project.clj:670)
at leiningen.core.main$_main$fn__3092.invoke(main.clj:295)
at leiningen.core.main$_main.doInvoke(main.clj:290)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.lang.Var.invoke(Var.java:415)
at clojure.lang.AFn.applyToHelper(AFn.java:161)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.core$apply.invoke(core.clj:617)
at clojure.main$main_opt.invoke(main.clj:335)
at clojure.main$main.doInvoke(main.clj:440)
at clojure.lang.RestFn.invoke(RestFn.java:436)
at clojure.lang.Var.invoke(Var.java:423)
at clojure.lang.AFn.applyToHelper(AFn.java:167)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException: No such var: trace/traced?
at clojure.lang.Util.runtimeException(Util.java:219)
at clojure.lang.Compiler.resolveIn(Compiler.java:6848)
at clojure.lang.Compiler.resolve(Compiler.java:6818)
at clojure.lang.Compiler.analyzeSymbol(Compiler.java:6779)
at clojure.lang.Compiler.analyze(Compiler.java:6343)
... 141 more

Error with wrap-inspect

This crept up today after removing wrap-docand adding wrap-inspectaccording to the README:

Error loading cider.nrepl.middleware.inspector: Could not locate cider/nrepl/middleware/inspector__init.class or cider/nrepl/middleware/inspector.clj on classpath:
Exception in thread "main" java.lang.RuntimeException: Unable to resolve var: cider.nrepl.middleware.inspector/wrap-inspect in this context, compiling:(/private/var/folders/d6/9ymk7dr16m954dpfxw9d1bv00000gn/T/form-init2514381011810604604.clj:1:3969)

Java 8 breakage

Current 0.7.0-SNAPSHOT gives the following error during jack-in:

Error loading cider.nrepl.middleware.info: java.lang.RuntimeException: Unable to find static field: CLASSDEF in class com.sun.tools.javac.tree.JCTree, compiling:(cider/nrepl/middleware/util/java/parser.clj:73:34)

Probably because they changed stuff in openjdk 8, see:
2598a10#src-cider-nrepl-middleware-util-java-parser-clj-P73

JDK version:

$ java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)

Add source artifacts to classpath

Is there interest in making the lein plugin automatically add source jars to the classpath?

One possibility is to add source coordinates to the :dependencies, but since most artifacts in the clojure world don't have source jars, that could be a problem. The second option is to add locally available source jars (and rely on lein pom; mvn dependency:sources; to download them).

Ritz contained code to add locally available source jars: https://github.com/pallet/ritz/blob/develop/lein-ritz/src/lein_ritz/add_sources.clj

The ritz code added the artifacts via a hooke, which is probably not the nicest way of doing it, as the source artifacts could end up in an uberjar.

Don't show completions for not-yet-declared vars?

Consider the following file:

(ns complete-example.core)

;; code

(def a nil)

;; code
EOF

Would it be useful if a did not show up in the completions list when it's not in scope (i.e. when the point is on a line above its declaration)? Obviously this will mostly require enhancements to compliment/cljs-tooling (and possibly CIDER itself), but I thought I'd post an issue here for discussion. Let me know if there's a better place for this :).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.