Настройка SLIME и Inferior-Lisp для Clojure в Emacs - PullRequest
5 голосов
/ 01 сентября 2011

SLIME

Я довольно новичок в Clojure и emacs, и я пытался настроить SLIME для Clojure. Официальная документация подразумевает, что вы знаете, что делаете с emacs. Там не просто куча кода, который вы можете вставить в свои файлы конфигурации. Поскольку меня интересует Clojure для анализа данных , я действительно не хочу иметь дело с Leiningen, если это вообще возможно, но мне нужна динамическая среда, которую обеспечивает слизь.

Я установил Clojure из git в /opt/clojure/ и clojure-contrib в /opt/clojure-contrib, и я могу получить ответ. Я установил swank-clojure, clojure-mode и slime из github в `~ / .bin, следуя этому уроку . Я изменил несколько вещей, когда это не сработало, добавив кое-что из раздела комментариев официальной документации.

Когда я начинаю слизь с M-x slime, я получаю непрерывный Polling "/tmp/slime.14113".. (Abort with 'M-x slime-abort-connection'.).

Вот мой init-clj.el :

;; clojure-mode
(add-to-list 'load-path "~/.bin/clojure-mode")


;; swank-clojure
(add-to-list 'load-path "~/.bin/swank-clojure")

(setq swank-clojure-jar-path "/opt/clojure/clojure.jar"
  swank-clojure-extra-classpaths (list
                  "~/.bin/swank-clojure/src/swank"
                  "/opt/clojure/clojure-contrib/target/clojure-contrib-1.2.0-SNAPSHOT.jar"))

(require 'swank-clojure)

;; slime
(eval-after-load "slime" 
  '(progn (slime-setup '(slime-repl))))

(add-to-list 'load-path "~/.bin/slime")
(require 'slime)
(eval-after-load 'slime '(setq slime-protocol-version 'ignore))
  (slime-setup '(slime-repl))
(require 'clojure-mode)
(require 'clojure-test-mode)

Вот ошибка, которую я получаю при вызове, когда ants.clj открыт:

(progn (load "/home/kca/.bin/slime/swank-loader.lisp" :verbose t) (funcall (read- from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.14113" :coding-system "iso-latin-1-unix"))

Clojure 1.2.0-master-SNAPSHOT
user=> java.lang.Exception: Unable to resolve symbol: progn in this context (NO_SOURCE_FILE:1)

Нижний Лисп

Я сделал скрипт в .bin/ с именем clj-repl, который содержит команду java для запуска repl. Я тогда M-x установил переменную inferior-lisp-program /home/wdkrnls/.bin/clj-repl. Emacs жалуется на неправильный тип.

Ответы [ 2 ]

5 голосов
/ 01 сентября 2011

Лучший способ использовать Clojure - начать с установки Leiningen .

Затем установите Swank Clojure в качестве плагина Leiningen.

Затем я бы порекомендовал удалить текущую пользовательскую настройку Clojure с .emacs и установить ELPA , а затем настроить следующий код инициализации в файле .emacs:

;; Find this line, added by ELPA:
(require 'package)
;; and add the following expression:
(add-to-list 'package-archives
             '("marmalade" . 
               "http://marmalade-repo.org/packages/") t)
;; ... and the rest of the ELPA init code
(package-initialize)

Затем запустите package-list-packages и установите clojure-mode и slimeparedit для хорошей меры) и все, что вам может понадобиться.

Это должно привести вас к настройке и готовности использовать SLIME в (Leiningen) проектах Clojure. И, несмотря на кажущуюся здесь сложную процедуру, вы можете создать из своих проектов один «uberjar» для развертывания на других серверах без каких-либо проблем с зависимостями.

1 голос
/ 11 сентября 2011

Попробуйте метод, подробно описанный здесь. Требуется пара минут, чтобы настроить все с нуля на чистом Unix или Mac Box:

http://www.learningclojure.com/2010/08/clojure-emacs-swank-slime-maven-maven.html

...