2010-08-23 31 views
4

我一直在使用emacs/slime來編碼lisp,但是用Clojure發現'lein swank'。 我必須說它非常有用,因爲我可以連接到運行clojure的服務器。等同於'lein swank'與其他使用emacs/slime的Lisp/Scheme實現

其他Lisp實現如何?什麼Lisp實現提供了相當於Clojure中的「lein swank」?我的意思是,是否還有其他Lisp實現提供服務器連接,以便使用'M-x slime-connect',而不僅僅是'M-x slime'?

回答

4

非clojure swank後端不需要lein swank等價物,因爲他們只需啓動lisp實例並在運行時更改其加載路徑以使其適用於給定項目。這種方法不適用於Clojure,因爲JVM的類路徑不能在運行時修改。

+0

注意,你現在可以在運行時使用更改CLASSPATH https://github.com/cemerick/pomegranate石榴或dj https://github.com/bmillare/dj。有了dj,你甚至可以在運行時使用小黑客攻擊熱點jvms來更改sys_paths。在運行時你唯一不能改變的是ld_library_path。 – bmillare 2012-02-17 13:27:24

1

您可以在CL中手動加載swank並啓動服務器(粘液/ swank是爲CL創建的)。

2

我不知道clisp,但這是我對SBCL的。這與我的clojure swank設置同時存在。我不使用ELPA,而是完全手動設置。

(add-to-list 'load-path "~/src/slime") 
(require 'slime) 
(add-to-list 'slime-lisp-implementations '(sbcl ("/usr/local/bin/sbcl"))) 
(setq slime-default-lisp 'sbcl) 

我有一個手工編譯的SBCL。我在SLIME CVS代碼庫中看到CLISP的swank後端,所以我猜想,將slime-default-lisp和slime-lisp-implementation改爲clisp可能會起作用。

lein swank主要用於啓動特定項目的swank端口。這是必需的,因爲JVM類路徑不能在運行時修改。因此,我們使用lein swank或swank-clojure-project來啓動java,並將classpaths設置爲我們的項目目錄和依賴項。使用CL,這不是必需的,因爲路徑名可以在運行時修改。

我已經張貼在完整的配置文件:http://github.com/vu3rdd/dotfiles

,我會很樂意幫助建立一個全手動的Emacs /淤泥/斯旺克設置。

+0

@rkrishnan:我明白了,實際上我想知道的是如何遠程運行一些類似'lein swank'的swank。但是,我想這可以在本地運行swank,而不是遠程運行。謝謝您的幫助。 – prosseek 2010-08-23 21:06:44

0

火起來的Lisp實現,加載斯旺克(通過Quicklisp,例如),並運行swank:create-server

CL-USER(1): (ql:quickload "swank") 
;; ... 
CL-USER(2): (swank:create-server) 
;; Swank started at port: 4005. 
4005 

如果要指定一個不同的端口,你可以這樣做,通過使用:port關鍵字參數:

CL-USER(3): (swank:create-server :port 4123) 
;; Swank started at port: 4123. 
4123 

注意,由於協議趨於版本之間改變,你需要確保你使用的不是很大的不同版本煤泥斯旺克的。對於Common Lisp的,我傾向於把類似下面的進入我的.emacs,根據版本煤泥目前在Quicklisp使用來自Quicklisp版本:

(add-to-list 'load-path "~/quicklisp/dists/quicklisp/software/slime-20111105-cvs") 
(add-to-list 'load-path "~/quicklisp/dists/quicklisp/software/slime-20111105-cvs/contrib")