2013-08-31 43 views
11

我有一些clojure函数,我想在我开始clojure REPL时预先加载。除非您在REPL的上下文中使用它们,否则这些函数的用处不大。如何在leiningen repl中预加载clojure文件?

如果有帮助,我通常会使用leiningen为我开始clojure REPL。

我如何告诉clojure(或leiningen,如果它不能通过平面clojure)预加载包含这些定义的clojure文件给我?

回答

11

有几种方法在我最喜欢的方法是如此让你在默认REPL命名想要的代码the leiningen sample project 一个这样描述到

/path/to/project/dev/user.clj做:

(ns user) 
(def foo 42) 

,并添加这样一行到project.clj文件:

(defproject hello "0.1.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :license {:name "Eclipse Public License" 
      :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :dependencies [[org.clojure/clojure "1.5.1"]] 
    :source-paths ["dev"]) 

这清楚地表明,这是一个,而小号开发直到将其加载到默认名称空间中。

当您运行nrepl-jack-in形式的emacs或“雷音REPL”形成的壳,你应该用user>命名空间与您的代码加载打招呼:

; nREPL 0.1.6 
user> foo 
42 
+3

+1的出色链接。你是否也可以在你的答案中包含一个为_any_项目执行此操作的方法(例如,使用'〜/ .lein/profiles.clj'),并假设我没有使用emacs(即,没有'nrepl-jack-in ',只是普通的终端屏幕)? – djhaskin987

+2

将这部分内容添加到anwser中,并且为了全局进行设置,最好将.lein/profiles.clj中的配置文件中的repl-options:init用于定义用户名称空间。 –

+1

我认为如果将额外的':source-paths'条目放入配置文件中会更合适。我认为':dev'配置文件会特别合适。正如答案所表达的那样,无论代码是在'dev'下面的,还是一直被包含在项目中。 – Geoff