Что не так с моей настройкой lein/nrepl/emacs?
Новичок Clojure программист здесь. NREPL в Emacs не работает для меня.
- Aquamacs 2.5 (Emacs 23.4.1)
- nrepl.el 0.1.8
- Leiningen 2.2.0 на Java 1.6.0_51 Java HotSpot(TM) 64-разрядная серверная виртуальная машина
Мой проект - это просто Hello World.
Запуск "lein repl" в оболочке работает, но nrepl.el не работает. Вместо того, чтобы попасть в пространство имен проекта в repl, я просто получаю уровень по умолчанию в пространстве имен "user".
Должно увидеть что-то вроде:
my$ lein repl
nREPL server started on port 57347
REPL-y 0.2.0
Clojure 1.5.1
Hello Project
my.core=>
Но вместо этого посмотри:
; nREPL 0.1.8-preview
user> (in-ns my.core)
CompilerException java.lang.ClassNotFoundException: my.core, compiling:(NO_SOURCE_PATH:1:1)
user>
В чистом сценарии nrepl.el я вижу, как идут два процесса Java, и они выглядят правдоподобно. Один из них имеет мой проект на -classpath и реализует реальный repl (сервер), а другой - клиентскую часть java (-D MyProjectPath -m leiningen.core.main repl:headless).
Я получаю ту же потерю, доберусь ли я туда m-x nrepl-jack-in
или начиная с оболочки, а затем m-x nrepl
, Я получаю ответ, который не знает мой проект.
Интересно, работает ли этот материал для кого-то, или у меня что-то установлено или настроено неправильно? Много версий "0.xxx" здесь происходит...
2 ответа
Похоже, вам не хватает кавычки перед вашим пространством имен, попробуйте следующее:
(in-ns 'my.core)
Обратите внимание на 'до моего.
NRepl всегда запускается в пространстве имен пользователя верхнего уровня. использование M-x nrepl-set-ns
, или же C-c M-n
в буфере Clojure, чтобы установить пространство имен NRepl для одного из буфера.
В вашем конкретном случае,
- визит
src/my/core.clj
, НажмитеC-c M-j
начать NRepl, - переключиться обратно на
src/my/core.clj
буфер, - Нажмите
C-u C-c C-z
установить для пространства имен NRepl значениеmy.core
и переключиться обратно в буфер NRepl.
C-u C-c C-z
это ярлык для C-c M-n
с последующим C-c C-z
переключиться на буфер NRepl.