2013-08-31 68 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