abo-abo / lispy

Short and sweet LISP editing
http://oremacs.com/lispy/
1.19k stars 129 forks source link

Eval in clojure file: No such namespace: p #453

Open mikavilpas opened 5 years ago

mikavilpas commented 5 years ago

Hello, I'm getting back to clojure after a while. I am using spacemacs and updated to the current stable cider. However, when I open up a clojure file and do special-lispy-eval, I get this error:

[nREPL] Starting server via /home/mvilpas/bin/lein update-in :dependencies conj \[com.cemerick/pomegranate\ \"0.4.0\"\] -- update-in :dependencies conj \[org.tcrawley/dynapath\ \"0.2.5\"\] -- update-in :dependencies conj \[org.clojure/tools.nrepl\ \"0.2.13\"\ \:exclusions\ \[org.clojure/clojure\]\] -- update-in :plugins conj \[refactor-nrepl\ \"2.4.0\"\] -- update-in :plugins conj \[cider/cider-nrepl\ \"0.18.0\"\] -- repl :headless :host ::...
=> Starting CIDER...
[nREPL] server started on 40485
[nREPL] Establishing direct connection to localhost:40485 ...
[nREPL] Direct connection to localhost:40485 established
=> nil
CompilerException java.lang.RuntimeException: No such namespace: p, compiling:(/tmp/form-init2567082953579246522.clj:1:5) 

I see there is some additional things for clojure in lispy that I'm not familiar with. If you have any idea on what could be done about this, that would be great.

mikavilpas commented 5 years ago

Here are some of my used versions:

My ~/.lein/profiles

{:user
 {:plugins [[cider/cider-nrepl "0.18.0"]
            [refactor-nrepl "2.4.0"]]
  :dependencies []}}

edit: also I'm using Fedora Linux

mikavilpas commented 5 years ago

Hmm, it looks like the error went away. I will keep trying for a while and report if it comes back.

abo-abo commented 5 years ago

Thanks.

mikavilpas commented 5 years ago

Sorry to say but this has come back... It occurs when I open a file and try to lispy-eval something. Anything else I could provide?

mikavilpas commented 5 years ago

Here's a stack trace I got:


  Show: Project-Only All 
  Hide: Clojure Java REPL Tooling Duplicates  (0 frames hidden)

2. Unhandled clojure.lang.Compiler$CompilerException
   Error compiling /home/mvilpas/.emacs.d/elpa/lispy-20180909.1729/lispy-clojure.clj at (1:1)

             Compiler.java: 7391  clojure.lang.Compiler/load
                      REPL:    1  finance-planner.core/eval16113
                      REPL:    1  finance-planner.core/eval16113
             Compiler.java: 6927  clojure.lang.Compiler/eval
             Compiler.java: 6890  clojure.lang.Compiler/eval
                  core.clj: 3105  clojure.core/eval
                  core.clj: 3101  clojure.core/eval
                  main.clj:  240  clojure.main/repl/read-eval-print/fn
                  main.clj:  240  clojure.main/repl/read-eval-print
                  main.clj:  258  clojure.main/repl/fn
                  main.clj:  258  clojure.main/repl
                  main.clj:  174  clojure.main/repl
               RestFn.java:  137  clojure.lang.RestFn/applyTo
                  core.clj:  646  clojure.core/apply
                  core.clj:  641  clojure.core/apply
                regrow.clj:   18  refactor-nrepl.ns.slam.hound.regrow/wrap-clojure-repl/fn
               RestFn.java: 1523  clojure.lang.RestFn/invoke
    interruptible_eval.clj:   87  clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
                  AFn.java:  152  clojure.lang.AFn/applyToHelper
                  AFn.java:  144  clojure.lang.AFn/applyTo
                  core.clj:  646  clojure.core/apply
                  core.clj: 1881  clojure.core/with-bindings*
                  core.clj: 1881  clojure.core/with-bindings*
               RestFn.java:  425  clojure.lang.RestFn/invoke
    interruptible_eval.clj:   85  clojure.tools.nrepl.middleware.interruptible-eval/evaluate
    interruptible_eval.clj:   55  clojure.tools.nrepl.middleware.interruptible-eval/evaluate
    interruptible_eval.clj:  222  clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
    interruptible_eval.clj:  190  clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
                  AFn.java:   22  clojure.lang.AFn/run
   ThreadPoolExecutor.java: 1149  java.util.concurrent.ThreadPoolExecutor/runWorker
   ThreadPoolExecutor.java:  624  java.util.concurrent.ThreadPoolExecutor$Worker/run
               Thread.java:  748  java.lang.Thread/run

1. Caused by java.io.FileNotFoundException
   Could not locate cemerick/pomegranate__init.class or cemerick/pomegranate.clj
   on classpath.

                   RT.java:  456  clojure.lang.RT/load
                   RT.java:  419  clojure.lang.RT/load
                  core.clj: 5893  clojure.core/load/fn
                  core.clj: 5892  clojure.core/load
                  core.clj: 5876  clojure.core/load
               RestFn.java:  408  clojure.lang.RestFn/invoke
                  core.clj: 5697  clojure.core/load-one
                  core.clj: 5692  clojure.core/load-one
                  core.clj: 5737  clojure.core/load-lib/fn
                  core.clj: 5736  clojure.core/load-lib
                  core.clj: 5717  clojure.core/load-lib
               RestFn.java:  142  clojure.lang.RestFn/applyTo
                  core.clj:  648  clojure.core/apply
                  core.clj: 5774  clojure.core/load-libs
                  core.clj: 5758  clojure.core/load-libs
               RestFn.java:  137  clojure.lang.RestFn/applyTo
                  core.clj:  650  clojure.core/apply
                  core.clj: 5860  clojure.core/use
                  core.clj: 5860  clojure.core/use
               RestFn.java:  408  clojure.lang.RestFn/invoke
         lispy-clojure.clj:   20  lispy-clojure/eval16117/loading--auto--
         lispy-clojure.clj:   20  lispy-clojure/eval16117
         lispy-clojure.clj:   20  lispy-clojure/eval16117
             Compiler.java: 6927  clojure.lang.Compiler/eval
             Compiler.java: 6916  clojure.lang.Compiler/eval
             Compiler.java: 7379  clojure.lang.Compiler/load
                      REPL:    1  finance-planner.core/eval16113
                      REPL:    1  finance-planner.core/eval16113
             Compiler.java: 6927  clojure.lang.Compiler/eval
             Compiler.java: 6890  clojure.lang.Compiler/eval
                  core.clj: 3105  clojure.core/eval
                  core.clj: 3101  clojure.core/eval
                  main.clj:  240  clojure.main/repl/read-eval-print/fn
                  main.clj:  240  clojure.main/repl/read-eval-print
                  main.clj:  258  clojure.main/repl/fn
                  main.clj:  258  clojure.main/repl
                  main.clj:  174  clojure.main/repl
               RestFn.java:  137  clojure.lang.RestFn/applyTo
                  core.clj:  646  clojure.core/apply
                  core.clj:  641  clojure.core/apply
                regrow.clj:   18  refactor-nrepl.ns.slam.hound.regrow/wrap-clojure-repl/fn
               RestFn.java: 1523  clojure.lang.RestFn/invoke
    interruptible_eval.clj:   87  clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
                  AFn.java:  152  clojure.lang.AFn/applyToHelper
                  AFn.java:  144  clojure.lang.AFn/applyTo
                  core.clj:  646  clojure.core/apply
                  core.clj: 1881  clojure.core/with-bindings*
                  core.clj: 1881  clojure.core/with-bindings*
               RestFn.java:  425  clojure.lang.RestFn/invoke
    interruptible_eval.clj:   85  clojure.tools.nrepl.middleware.interruptible-eval/evaluate
    interruptible_eval.clj:   55  clojure.tools.nrepl.middleware.interruptible-eval/evaluate
    interruptible_eval.clj:  222  clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
    interruptible_eval.clj:  190  clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
                  AFn.java:   22  clojure.lang.AFn/run
   ThreadPoolExecutor.java: 1149  java.util.concurrent.ThreadPoolExecutor/runWorker
   ThreadPoolExecutor.java:  624  java.util.concurrent.ThreadPoolExecutor$Worker/run
               Thread.java:  748  java.lang.Thread/run
mikavilpas commented 5 years ago

I see refactor-nrepl mentioned there. Maybe there is some sort of incompatibility?

abo-abo commented 5 years ago

I can't reproduce the issue with the latest CIDER master (clojure-emacs/cider@7008a33).

It looks like "com.cemerick/pomegranate" isn't on your path, although lispy does load it with:

(eval-after-load 'cider
  '(progn
    (cider-add-to-alist 'cider-jack-in-dependencies
     "org.tcrawley/dynapath" "0.2.5")
    (cider-add-to-alist 'cider-jack-in-dependencies
     "com.cemerick/pomegranate" "0.4.0")))

Can you try to restart with this config:

(setq cider-default-repl-command "lein")
sooheon commented 4 years ago

I came across this as well, cider-jack-in-dependencies does not seem to work properly when cider-jack-in-default is clojure-cli.

I just added pomegranate to global deps.edn for now

abo-abo commented 4 years ago

@sooheon Could you please add a description of this global deps.edn modification? I could at least add a warning to lispy about it.

sooheon commented 4 years ago

Clarification: if I start by evaling a form and let lispy do the jack-in for me, pom gets added correctly. If I forget and jack in with C-c M-j, then nothing extra gets added so I need pom in ~/.clojure/deps.edn like so:

{:dependencies {com.cemerick/pomegranate {:mvn/version "RELEASE"}
 [...]}

This is not ideal, because you never know when global deps will mess with something, so it's probably better to put it in an alias and have cider use that alias by default.

abo-abo commented 4 years ago

@sooheon Thanks, I've made it better for your use case. You no longer need to modify ~/.clojure/deps.edn. Please test.

sooheon commented 4 years ago

Thanks, this resolves the issue afaict

abo-abo commented 4 years ago

Thanks, closing. If any issues pop up, please let me know.