如何在SLIME REPL中使用项目命名空间

时间:2012-01-14 07:31:18

标签: emacs clojure slime swank leiningen

我已经使用swank插件,Emacs,SLIME和clojure-mode安装了lein,并使用lein new创建了一个新项目。我把项目称为clojure-test。然后我在Emacs中打开clojure_test / src / clojure_test / core.clj,并在此文件中调用M-x clojure-jack-in。这打开了一个SLIME窗口,工作正常;我可以使用C-c C-l加载代码,使用C-c M-p切换到我的项目命名空间,并使用我添加到项目中的依赖项。

当从“用户”命名空间尝试使用项目本身的命名空间时,问题就出现了。从“user”命名空间调用SLIME内部的(use 'clojure-test)会导致以下错误:

Could not locate clojure_test__init.class or clojure_test.clj on classpath:
[Thrown class java.io.FileNotFoundException]
  1. 为什么Clojure会搜索这些文件?显然已经加载了命名空间,因为我可以通过C-c M-p切换到它,但由于某种原因,Clojure认为这些特定文件对于使用命名空间很重要。

  2. 如何设置项目以便我可以使用SLIME的基本命名空间?由于lein应该照顾这个,我不需要提供哪些信息呢?

1 个答案:

答案 0 :(得分:2)

命名空间" clojure-test"应该在./src/clojure_test.clj中(默认情况下./src在classpath中,除非你在project.clj文件中更改了它)

你把它放在src/clojure_test/core.clj(它应该有ns clojure-test.core)吗?

请参阅http://clojure.org/libs

上的libs文档