Разные lisp-ы в slime
Oct. 27th, 2008 10:14 pmПоставил свежую версию slime из cvs, оказалось там теперь есть backend для mit-scheme, а ещё существует backend для clojure.
Про его установку и настройку здесь.
Clojure - это относительно новый диалект lisp, работающий на платформе java. В нём реализован интересный подход к многопоточности и сделан упор на функциональное программирование без побочных эффектов.
Так что теперь у меня работает sbcl, clojure и mit-scheme.

Чтобы использовать slime с этими языками надо в .emacs написать следующее:
Про его установку и настройку здесь.
Clojure - это относительно новый диалект lisp, работающий на платформе java. В нём реализован интересный подход к многопоточности и сделан упор на функциональное программирование без побочных эффектов.
Так что теперь у меня работает sbcl, clojure и mit-scheme.

Чтобы использовать slime с этими языками надо в .emacs написать следующее:
(setq inferior-lisp-program "/usr/bin/sbcl") ; <-- insert your path (add-to-list 'load-path "/home/anton/local/share/emacs/slime") ; <-- insert your path (add-to-list 'load-path "/home/anton/local/share/emacs/slime/contrib") ; <-- insert your path (require 'slime) (require 'slime-autoloads) (slime-setup '(slime-fancy slime-scratch slime-editing-commands slime-fuzzy slime-presentations slime-scheme)) (setq slime-net-coding-system 'utf-8-unix) (setq common-lisp-hyperspec-root "/home/anton/programing/doc/lisp/HyperSpec/"); <-- insert your path (setq slime-lisp-implementations '((mit-scheme ("mit-scheme") :init mit-scheme-init))) (add-to-list 'slime-lisp-implementations '(sbcl ("sbcl" "--core" "/home/anton/local/share/sbcl.core-for-slime"))) (defun mit-scheme-init (file encoding) (setq slime-protocol-version 'ignore) (format "%S\n\n" `(begin (load-option 'format) (load-option 'sos) (eval '(construct-normal-package-from-description (make-package-description '(swank) '(()) (vector) (vector) (vector) false)) (->environment '(package))) (load ,(expand-file-name "/home/anton/local/share/emacs/slime/contrib/swank-mit-scheme.scm" ; <-- insert your path slime-path) (->environment '(swank))) (eval '(start-swank ,file) (->environment '(swank)))))) (defun mit-scheme () (interactive) (slime 'mit-scheme)) (defun find-mit-scheme-package () (save-excursion (let ((case-fold-search t)) (and (re-search-backward "^[;]+ package: \\((.+)\\).*$" nil t) (match-string-no-properties 1))))) (setq slime-find-buffer-package-function 'find-mit-scheme-package) (add-to-list 'load-path "~/local/share/clojure-mode"); <-- insert your path (require 'clojure-auto) (setq swank-clojure-binary "/home/anton/bin/clojure") ; <-- insert your path (add-to-list 'load-path "~/local/share/swank-clojure") ; <-- insert your path (require 'swank-clojure-autoload)