Emacs 下用 slime 鏈接 clojure 最簡單實現

有很多同窗想在 Emacs 下用 slime 調試 clojure 程序,我也是其中之一,之因此這麼選擇是由於熟悉了 Emacs 異常方便的快捷鍵操做,很是清楚把這些快捷鍵跟 clojure 的 REPL 機制結合起來會讓調試程序來很是順手。 git

這個圖很清楚地顯示了這種調試方式的內部通訊機制: github


不過不幸的是,slime 和 clojure 是兩個版本發佈比較活躍的軟件,經常出現的狀況是:swank-clojure 剛剛修改好對最新版本的 clojure 的適配,clojure 又出新版本了,又有某些修改使得二者沒法協調工做。 shell

因而就悲劇了,搞半天都加載不成功。 工具

我也被這個問題困擾許久,直到發現這篇文章(http://7thgen.info/blog/2010/12/clojure-for-mac-os-x/) ui

SLIME 通常的安裝方式是到其主頁下載最新的 CVS 版本使用,不過由於 Clojure 和 LISP 有些微妙的差別,並且自己仍是個比較新的語言,關鍵機制的改變也比較多見,因此 swank-clojure 的實現常常趕不上 SLIME 最新的變化,因而 technomancy 維護了一個 SLIME 的分支,用來保持穩定在和最新版本 swank-clojure 可以協同工做的狀態。technomancy 比較建議採用 Emacs 23 之後內置的包管理工具 ELPA 來安裝這個版本的 SLIME,可是經我屢次試驗,老是有些問題,因此仍是採用手工方式:

好了,下面是具體的操做步驟: spa

首先要保證安裝了 git ,由於咱們須要從 github 獲取能協調工做的最新版本的 slime 和 swank-clojure,具體安裝方式也很簡單,在 mac上用 macport 就好了: 調試

sudo port install git

而後創建一個目錄,用來保存 slime 和 swank-clojure code

mkdir github

接着進入這個目錄,用 git 獲取 slime 和 swank-clojure,分別保存在 clojure-mode 和 slime-new 目錄下,命令以下:
blog

cd github
git clone https://github.com/technomancy/clojure-mode.git clojure-mode
git clone https://github.com/technomancy/slime.git slime-new

具體執行顯示以下: rem

Air:~ admin$ cd Github
Air:Github admin$ 

Air:GitHub admin$ git clone https://github.com/technomancy/clojure-mode.git clojure-mode
Cloning into clojure-mode...
remote: Counting objects: 1879, done.
remote: Compressing objects: 100% (1011/1011), done.
remote: Total 1879 (delta 815), reused 1879 (delta 815)
Receiving objects: 100% (1879/1879), 479.79 KiB | 199 KiB/s, done.
Resolving deltas: 100% (815/815), done.

Air:GitHub admin$ git clone https://github.com/technomancy/slime.git slime-new
Cloning into slime-new...
remote: Counting objects: 16450, done.
remote: Compressing objects: 100% (5583/5583), done.
remote: Total 16450 (delta 10862), reused 16450 (delta 10862)
Receiving objects: 100% (16450/16450), 13.70 MiB | 94 KiB/s, done.
Resolving deltas: 100% (10862/10862), done.

好了,如今已經把配套的 slime 和 swank-clojure 取回來了,接着就要配置你的 Emacs 配置文件 .emacs 了,打開該文件,加入以下內容:

(add-to-list 'load-path "~/Github/slime-new/")
(setq load-path (cons "~/Github/slime-new/" load-path))

(add-to-list 'load-path "~/Github/clojure-mode/")
(require 'clojure-mode)

如今就所有搞定了,先啓動 Emacs ,按 M-x slime-connect 

顯示鏈接到本機 127.0.0.1 按回車

顯示端口爲 4005 按回車

就能夠進入 clojure 的 REPL 界面了。

相關文章
相關標籤/搜索