简体   繁体   中英

Executing Clojure in Emacs with `cider-jack-in`

I'm trying to run Clojure emacs with cider package installed. I use Emacs 24.5.1 on Mac OS X 10.10.4.

I downloaded lein script and copied the script in ~/Dropbox/bin. I checked with lein repl that Clojure works fine.

cider package is installed with Mx package-install . I edited the ~/.emacs.d/init.el to specify the lein script: (add-to-list 'exec-path "~/Dropbox/bin") with the hint from Can't launch `lein` REPL in Emacs .

However, when I started emacs and run Mx cider-jack-in , I have this error message:

在此输入图像描述

When I started lein repl and executed Mx cider-connect ( http://xahlee.info/clojure/clojure_emacs_cider.html ), I can have the cider-repl running in Emacs.

在此输入图像描述

What might be wrong?

The quickest fix was to symbolically link lein to the path where Emacs can find it. This line of code fixed the issue.

sudo ln -s ~/Dropbox/bin/lein /usr/local/bin/lein

I summarized the steps to install the cider package for running Clojure on emacs without any errors or warnings.

cider - https://github.com/clojure-emacs/cider

Installation

  • Download lein https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein
    • I copied the file ~/Dropbox/bin after making it executable.
  • It looks like that /usr/local/bin is not the path that Emacs finds the binary automatically, so I had to set it up.

    • Run sudo ln -s ~/Dropbox/bin/lein /usr/local/bin/lein
    • Update ~/.emacs.d/init.el to specify the location of lein script:
      • (add-to-list 'exec-path "/usr/local/bin")
  • Update ~/.lein/profiles.clj

Errors and solutions

  • If error The lein executable (specified by cider-lein-command' or cider-boot-command') isn't on your exec-path occurs:

    • make the symbolic link, and update the init.el as is explained.
  • If error "Symbol's function definition is void: clojure-project-dir" occurs, it's because of the package version mismatch.

Now, all the warnings are gone.

在此输入图像描述

References

Added

For Mac OS X, brew install leiningen can install the lein, but this caused an issue as in How to upgrade nrepl version of leiningen? . This is the message from the lein brew.

nREPL server started on port 61216 on host 127.0.0.1 - nrepl://127.0.0.1:61216
REPL-y 0.3.5, nREPL 0.2.6
Clojure 1.6.0
Java HotSpot(TM) 64-Bit Server VM 1.8.0_45-b14

I had to use the lein from the lein site to get the correct version of tools.

Retrieving org/clojure/clojure/1.2.0/clojure-1.2.0.pom from central
nREPL server started on port 61279 on host 127.0.0.1 - nrepl://127.0.0.1:61279
REPL-y 0.3.7, nREPL 0.2.7
Clojure 1.7.0

Another easy solution is to just use homebrew. While homebrew is overkill just for installing lein, if you already use it, then all you need to do is run

brew update
brew install leiningen

and your done. I use homebrew to install emacs and some other useful apps, so I already have it on my system.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM