2010-12-29 30 views
6

Tôi có thể chạy các emacs và bắt đầu chất nhờn (với M-x slime). Tại thời điểm này, tôi nhận được REPL trong bộ đệm kém chất lượng và có thể chạy ở đó. Nhưng khi tôi mở ra mã lisp trong một không đệm của các tác phẩm chất nhờn-tốt lành (C-x C-e, C-c C-k vv) và tôi tiếp tục nhìn thấy điều này trong Tin nhắn đệm (với một số-số tăng):Điều gì là sai với thiết lập emacs/chất nhờn của tôi (biên dịch và tải/eval không hoạt động)?

kết nối chất nhờn: Không được kết nối.

Polling "/var/folders/B9/B9B5J15dH+aNt5J5gkROEk+++TI/-Tmp-/slime.3202" .. (Abort với `Mx chất nhờn-hủy bỏ kết nối'.) [69 lần]

Làm cho tôi nghĩ chất nhờn không kết nối với thông dịch viên chính xác, nhưng vì tôi rất mới với các emacs và lisp, tôi bị kẹt ở đây. Thiết lập của tôi là:

+0

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

Trả lời

6

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~/.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

+0

Vì vậy, thiết lập này làm việc cho Clojure với chất nhờn, nhưng không cho hội nhập chất nhờn clisp. Bằng cách nào đó khi tôi nói M-x slime-common-lisp, nó vẫn sử dụng chất nhờn từ elpa. Làm cách nào để khắc phục điều đó? – arnab

+0

Thử khởi động lại Emacs trước khi sử dụng 'M-x slime-common-lisp'. Một thủ thuật Emacs có lẽ sẽ có thể nói cách dỡ bỏ ELPA SLIME trước khi tải CVS nhưng tôi không biết làm thế nào để thực hiện nó. – spacemanaki

+0

Vâng tôi đã khởi động lại các emacs trước khi tôi thử 'M-x slime-common-lisp'.Tuy nhiên, ESK đang tải elpa/slime * trước slime-cvs của tôi và do đó là vấn đề. Tôi cũng sẽ thử hỏi về các vấn đề esk. Cảm ơn. – arnab

0

Nếu u đã cài đặt một cách chính xác chất nhờn trong hệ thống của bạn sau đó sử dụng tốt hơn sbcl và thêm dòng sau vào bạn ~/.emacs (setq inferior-lisp-program "/usr/bin/sbcl")

/usr/bin/sbcl có thể khác nhau theo đường dẫn cài đặt sbcl của bạn.

Các vấn đề liên quan