Sau đây là những gì tôi đã làm để có được Common Lisp và Clojure làm việc trong cùng một cài đặt Emacs, cùng với bộ kit khởi động emacs tuyệt vời. Điều này sẽ không cho phép bạn sử dụng cả hai cùng một lúc (bạn phải khởi động lại Emacs để chuyển từ CL sang Clojure hoặc ngược lại)
Tôi tin rằng phiên bản SLIME trong ELPA cũ nhưng hoạt động cho Clojure. Phiên bản mới hơn của SLIME sẽ không hoạt động đối với Clojure. Ngoài ra, phiên bản SLIME này dường như bị loại bỏ (không có trình tải swank.el?) Và sẽ không hoạt động với Common Lisp.
Đây là các bước tôi đã làm để có được điều này để làm việc, nó chỉ là những gì làm việc cho tôi. Tất cả các bit đang được phát triển tích cực, vì vậy tôi nghĩ rằng vỡ trong khu vực này là khá có thể.
Với Emacs tươi (không cần cấu hình gì cả, vì vậy di chuyển bất cứ điều gì .emacs
ở một nơi khác cho thời điểm này) cài đặt ELPA:
http://tromey.com/elpa/install.html
Từ bên trong Emacs, cài đặt các gói thầu "chất nhờn" và "slime- repl ". (M-x package-list-packages
sau đó C-s slime
sau đó i
để chọn và x
để cài đặt)
Di chuyển các tập tin trong ~/.emacs.d/elpa/slime-20100404
và ~/.emacs.d/elpa/slime-repl-20100404
vào một thư mục mới như ~/hacking/lisp/elpa-slime
.
Vứt cài đặt ELPA: $ rm -rf .emacs.d
.
Bây giờ sao chép bộ kit khởi động emacs và di chuyển nó đến .emacs.d
. Tôi chỉ làm điều này với một bản sao mới từ Github của công nghệ, vì vậy hãy thử điều đó trước nếu bạn có vấn đề.
Lấy SLIME mới nhất với CVS:
cvs -d :pserver:anonymous:[email protected]:/project/slime/cvsroot co cvs-slime
Tôi không nghĩ rằng OS X đi kèm với CVS cài đặt, do đó bạn sẽ cần phải cài đặt nó từ Macports, Homebrew hoặc một cái gì đó.
Tôi đặt cvs-slime
trong ~/hacking/lisp
.
Hy vọng rằng nó là rõ ràng những gì mà Emacs Lisp dưới đây không:
(defun slime-common-lisp()
(interactive)
(setq inferior-lisp-program "/usr/local/bin/sbcl") ; your Common Lisp impl
(add-to-list 'load-path "~/hacking/lisp/cvs-slime/") ; your SLIME from CVS directory
(require 'slime)
(slime-setup '(slime-repl))
(slime))
(defun slime-clojure()
(interactive)
(add-to-list 'load-path "~/hacking/lisp/elpa-slime")
(require 'slime)
(slime-setup '(slime-repl))
(slime-connect "localhost" 4005))
Đối với Clojure bạn sẽ phải bắt đầu thời gian chạy Clojure và swank-clojure
trên cổng 4005, tôi nghĩ rằng sử dụng Leiningen là phương pháp đã được phê duyệt:
Tạo một dự án mới:
$ lein new project
$ cd project
Trong project.clj
:
(defproject newclj "1.0.0-SNAPSHOT"
:description "FIXME: write"
:dependencies [[org.clojure/clojure "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]]
:dev-dependencies [[swank-clojure "1.2.1"]])
Sau đó:
$ lein deps
$ lein swank
Edited thêm:
Nếu bạn thấy rằng Paredit trong SLIME REPL bị phá vỡ trong khi sử dụng thiết lập này, check this out: http://www.emacswiki.org/emacs/ParEdit#toc3
Ít nhất một vấn đề tiềm năng khác với điều này là, AFAICT, nếu bạn mở một tệp nguồn Lisp chung và sau đó bắt đầu SLIME, bạn sẽ không thể gửi biểu mẫu từ bộ đệm đầu tiên đến bộ đệm SLIME. Vì vậy, mở một bộ đệm SLIME trước khi mở bất kỳ tập tin nguồn thường Lisp, và nó sẽ làm việc. Điều này dường như không áp dụng cho Clojure.
Tài liệu tham khảo:
emacs setup for both clojure and common lisp with slime-fancy (slime-autodoc)
https://github.com/technomancy/swank-clojure/issues/closed#issue/31/comment/544166
BTW - Tôi đã thử xóa các tùy chỉnh của mình và không hoạt động. Tất cả những gì tôi đã để lại là: (setq kém hơn-lisp-program "/ usr/local/bin/clisp") (add-to-list 'load-path "~/code/playground/lisp/slime /") (yêu cầu 'chất nhờn) (chất nhờn-thiết lập) – arnab