Краткая версия: ошибки при запуске M-x slime-connect или M-x clojure-jack-in при использовании lein swank для запуска сервера swank.
Я использую emacs 24.0.50.1 в Ubuntu 10.10. Я установил следующие пакеты в emacs из ELPA: clojure-mode, paredit, slime, slime-repl
Я установил leiningen из github и добавил его в путь к классам, затем запустил
плагин lein установить swank-clojure 1.3.3
.
После этого я создал новый каталог ~ / tmp /, cd в него и запустил:
lein new test-project
, который, похоже, все настроил нормально. Затем я открыл /tmp/new-project/project.clj в emacs и изменил его на:
(defproject test-project "1.0.0-SNAPSHOT"
:description "Test Project"
:dependencies [[org.clojure/clojure "1.2.1"]
[org.clojure/clojure-contrib "1.2.0"]]
:dev-dependencies [[swank-clojure "1.3.3"]])
После этого я вернулся в папку / tmp / new-project и запустил lein deps
, затем lein swank
для загрузки зависимостей и запуска сервера swank, который выдает результат:
Connection opened on local port 4005.
Вернувшись в emacs, я столкнулся с проблемой подключения его к серверу swank. Я попытался открыть файл core.clj и запустить Mx slime-connect
, который выдает ошибку:
Symbol's function definition is void: define-slime-contrib
Что заставляет меня думать, что он либо не видит запущенный шикарный сервер, либо есть некоторая конфигурация, которая требует нужно сделать, чтобы он видел сервер. Я также пробовал (с тем же открытым файлом и с открытым project.clj) Mx clojure-jack-in
, который, как я полагаю, пытается запустить закрытие REPL в папке проекта, но это дает следующее:
Debugger entered--Lisp error: (error "Could not start swank server: sh: lein: not found
")
signal(error ("Could not start swank server: sh: lein: not found\n"))
error("Could not start swank server: %s" "sh: lein: not found\n")
clojure-jack-in-sentinel(# "exited abnormally with code 127\n")
Я следовал указаниям http: // matthias-schneider.org / docs / clojure-setup / для пакетов emacs и установки lein, затем начал следовать инструкциям по тестовой конфигурации из http://riddell.us/ClojureSwankLeiningenWithEmacsOnLinux.html , как только у меня возникли проблемы с получением Mx slime-connect, чтобы открыть REPL.
Обновление :
удалил ~ / tmp / test-project, удалил пакеты emacs и /.emacs.d/elpa/, переустановил emacs, переустановил пакеты clojure-mode и paredit, скопировал ~ / .lein в / bin, чтобы убедиться в отсутствии проблем с путями (не был уверен, что /.lein или /.lein/bin должны быть в пути). Ran /. Lein / bin / swank-clojure
, а затем открыл emacs, открыл проект.clj и попробовал Mx slime-connect
, который теперь запрашивает у меня хост (локальное значение по умолчанию ), порт (по умолчанию 4005), сообщает о подключении к swank, выдает сообщение о версиях swank и slime, различающихся (y или n) y, затем минибуфер выдает ошибку в фильтре процесса: Lisp-соединение неожиданно закрыто
. В терминале, где я запускал /. Lein / bin / swank-clojure
, появляется следующая ошибка Java:
exception in read loop
java.lang.NumberFormatException: For input string: " a6"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:470)
at swank.core.protocol$read_swank_message.invoke(protocol.clj:41)
at swank.core.connection$read_from_connection.invoke(connection.clj:59)
at swank.core$read_loop.invoke(core.clj:337)
at swank.swank$connection_serve$fn__1486$fn__1487.invoke(swank.clj:32)
at clojure.lang.AFn.applyToHelper(AFn.java:159)
at clojure.lang.AFn.applyTo(AFn.java:151)
at clojure.core$apply.invoke(core.clj:540)
at swank.swank$connection_serve$fn__1486.doInvoke(swank.clj:29)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.AFn.run(AFn.java:24)
at java.lang.Thread.run(Thread.java:636)
Обновление:
Решено, мне нужно было удалить emacs и удалить ВСЕ из /.emacs.d/, а не только пакеты в / elpa /. После переустановки я получил только пакет clojure-mode, а не slime или slime-repl. Теперь можно подключиться к M-x clojure-jack-in
, и я готов поработать!