2013-08-31 23 views
11

Tôi có một số chức năng clojure mà tôi muốn được tải sẵn khi tôi bắt đầu REPL clojure. Các hàm không được sử dụng nhiều trừ khi bạn đang sử dụng chúng trong ngữ cảnh của REPL.Làm cách nào để tải trước một tệp clojure trong leiningen repl?

Nếu nó giúp, tôi thường sử dụng leiningen để bắt đầu một REPL clojure cho tôi.

Làm cách nào để tôi có thể nói clojure (hoặc leiningen, nếu nó không có sẵn thông qua clojure phẳng) để tải trước tệp clojure chứa các định nghĩa này cho tôi?

Trả lời

11

Có một số cách để làm điều này được mô tả trong the leiningen sample project một trong những phương pháp ưa thích của tôi là nên đặt mã bạn muốn trong không gian tên mặc định vào repl

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

(ns user) 
(def foo 42) 

và thêm một dòng như sau vào file 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"]) 

này làm cho nó rõ ràng rằng đây là dành cho dev trong khi s cho đến khi nó được nạp vào không gian tên mặc định.

Khi bạn chạy nrepl-jack-in emacs hình thức hoặc "Lein repl" hình thành vỏ, bạn nên được chào đón với một không gian tên user> với mã của bạn nạp:

; nREPL 0.1.6 
user> foo 
42 
+3

+1 cho liên kết tuyệt vời. Bạn cũng có thể đưa vào câu trả lời của bạn một cách để làm điều này cho dự án _any_ (ví dụ: sử dụng '~/.lein/profiles.clj') và cũng giả sử rằng tôi không sử dụng các emacs (ví dụ, không có 'nrepl-jack-in ', chỉ là màn hình thiết bị đầu cuối bình thường)? – djhaskin987

+2

Thêm phần này vào anwser, và đối với các thiết lập trên toàn cầu, nó có thể thích hợp hơn khi sử dụng: repl-options: init trong một cấu hình trong tệp .lein/profiles.clj của bạn để sử dụng định nghĩa vùng tên người dùng. –

+1

Tôi nghĩ rằng sẽ thích hợp hơn nếu bạn đặt mục nhập bổ sung ': source-paths' bên trong một cấu hình. Cấu hình ': dev' sẽ đặc biệt thích hợp. Khi câu trả lời là viết tắt, bất kỳ mã nào nằm trong 'dev' trong khi vẫn được đưa vào dự án mọi lúc. – Geoff

Các vấn đề liên quan