Разные lisp-ы в slime

Oct 27, 2008 22:14

Поставил свежую версию slime из cvs, оказалось там теперь есть backend для mit-scheme, а ещё существует backend для clojure.
Про его установку и настройку здесь.
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)

sbcl, clojure, fun, lisp, scheme, emacs

Previous post Next post
Up