jcrossley3 / lein-modules

An alternative to Maven multi-module projects in Leiningen
Eclipse Public License 1.0
83 stars 17 forks source link

[Failure] Lein fails to start with custom cider-nrepl plugin #42

Closed igrishaev closed 5 years ago

igrishaev commented 5 years ago

I've got the following in my ~/.lein/profiles.clj file:

{:user
        :plugins [[lein-try "0.4.3"]
                  [cider/cider-nrepl "0.18.0"]
                  [lein-cljfmt "0.6.4"]]

When running ANY lein command against a project powered with lein-modules plugin, I'm getting a weird error (see below).

I figured out the problem lurks in that line: [cider/cider-nrepl "0.18.0"]. When commented, it doesn't cause any troubles. But on the other hand, I lose Cider-middleware functionality which is sad.

Do you have an idea why does this happen?

$> lein modules :checkouts
java.lang.ClassCastException: clojure.lang.Symbol cannot be cast to java.lang.CharSequence
 at clojure.string$split.invokeStatic (string.clj:219)
    clojure.string$split.invoke (string.clj:219)
    leiningen.core.main$version_satisfies_QMARK_.invokeStatic (main.clj:370)
    leiningen.core.main$version_satisfies_QMARK_.invoke (main.clj:369)
    cider_nrepl.plugin$middleware.invokeStatic (plugin.clj:43)
    cider_nrepl.plugin$middleware.invoke (plugin.clj:22)
    clojure.lang.Var.invoke (Var.java:384)
    leiningen.core.project$apply_middleware.invokeStatic (project.clj:817)
    leiningen.core.project$apply_middleware.invoke (project.clj:810)
    clojure.core.protocols$fn__8144.invokeStatic (protocols.clj:168)
    clojure.core.protocols/fn (protocols.clj:124)
    clojure.core.protocols$fn__8099$G__8094__8108.invoke (protocols.clj:19)
    clojure.core.protocols$seq_reduce.invokeStatic (protocols.clj:31)
    clojure.core.protocols$fn__8131.invokeStatic (protocols.clj:75)
    clojure.core.protocols/fn (protocols.clj:75)
    clojure.core.protocols$fn__8073$G__8068__8086.invoke (protocols.clj:13)
    clojure.core$reduce.invokeStatic (core.clj:6828)
    clojure.core$reduce.invoke (core.clj:6810)
    leiningen.core.project$apply_middleware.invokeStatic (project.clj:812)
    leiningen.core.project$apply_middleware.invoke (project.clj:810)
    leiningen.core.project$activate_middleware.invokeStatic (project.clj:844)
    leiningen.core.project$activate_middleware.invoke (project.clj:840)
    leiningen.core.project$set_profiles.invokeStatic (project.clj:929)
    leiningen.core.project$set_profiles.doInvoke (project.clj:922)
    clojure.lang.RestFn.invoke (RestFn.java:425)
    lein_modules.inheritance$inherit.invokeStatic (inheritance.clj:61)
    lein_modules.inheritance$inherit.invoke (inheritance.clj:53)
    lein_modules.plugin$middleware.invokeStatic (plugin.clj:17)
    lein_modules.plugin$middleware.invoke (plugin.clj:6)
    clojure.lang.Var.invoke (Var.java:384)
    leiningen.core.project$apply_middleware.invokeStatic (project.clj:817)
    leiningen.core.project$apply_middleware.invoke (project.clj:810)
    clojure.core.protocols$fn__8144.invokeStatic (protocols.clj:168)
    clojure.core.protocols/fn (protocols.clj:124)
    clojure.core.protocols$fn__8099$G__8094__8108.invoke (protocols.clj:19)
    clojure.core.protocols$seq_reduce.invokeStatic (protocols.clj:31)
    clojure.core.protocols$fn__8131.invokeStatic (protocols.clj:75)
    clojure.core.protocols/fn (protocols.clj:75)
    clojure.core.protocols$fn__8073$G__8068__8086.invoke (protocols.clj:13)
    clojure.core$reduce.invokeStatic (core.clj:6828)
    clojure.core$reduce.invoke (core.clj:6810)
    leiningen.core.project$apply_middleware.invokeStatic (project.clj:812)
    leiningen.core.project$apply_middleware.invoke (project.clj:810)
    leiningen.core.project$activate_middleware.invokeStatic (project.clj:844)
    leiningen.core.project$activate_middleware.invoke (project.clj:840)
    leiningen.core.project$init_project.invokeStatic (project.clj:986)
    leiningen.core.project$init_project.invoke (project.clj:974)
    leiningen.core.project$read.invokeStatic (project.clj:1057)
    leiningen.core.project$read.invoke (project.clj:1054)
    leiningen.core.project$read.invokeStatic (project.clj:1058)
    leiningen.core.project$read.invoke (project.clj:1054)
    leiningen.core.main$_main$fn__6681.invoke (main.clj:447)
    leiningen.core.main$_main.invokeStatic (main.clj:442)
    leiningen.core.main$_main.doInvoke (main.clj:439)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:665)
    clojure.main$main_opt.invokeStatic (main.clj:491)
    clojure.main$main_opt.invoke (main.clj:487)
    clojure.main$main.invokeStatic (main.clj:598)
    clojure.main$main.doInvoke (main.clj:561)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.main.main (main.java:37)
pyr commented 5 years ago

The issue lies with how cider-nrepl parses versions. https://github.com/clojure-emacs/cider-nrepl/pull/611 addresses the issue.

If you lein install this specific version and tweak cider-jack-in-lein-plugins, functionality is restored With a locally installed cider at version "0.22.0-beta1" I only had to do:

(setq cider-jack-in-lein-plugins '(("cider/cider-nrepl" "0.22.0-beta1")) )

igrishaev commented 5 years ago

Closing since the error relates to cider/cider-nrepl.

jcrossley3 commented 5 years ago

Thanks for sharing the fix for this!

pyr commented 5 years ago

This is now fixed by the newest release of cider-nrepl