how to load ns by default when starting repl

前端 未结 2 1984
野性不改
野性不改 2021-01-04 03:42

I am using lein2. I would like to load some ns by default when the repl starts. Is it possible to either specify in project.clj the ns that should be loaded, when lein2 repl

相关标签:
2条回答
  • 2021-01-04 04:07

    You will find a lot of answers in the sample project

    ;; Options to change the way the REPL behaves
    :repl-options {;; Specify the string to print when prompting for input.
                   ;; defaults to something like (fn [ns] (str *ns* "=> "))
                   :prompt (fn [ns] (str "your command for <" ns ">, master? " ))
                   ;; Specify the ns to start the REPL in (overrides :main in
                   ;; this case only)
                   :init-ns foo.bar
                   ;; This expression will run when first opening a REPL, in the
                   ;; namespace from :init-ns or :main if specified
                   ;; This expression will run when first opening a REPL, in the
                   ;; namespace from :init-ns or :main if specified
                   :init (println "here we are in" *ns*)
    

    Using a project.clj I had handy:

    (defproject test "1.0.0"
      :repl-options { :init-ns test.core 
                      :init (do
                              (use 'clojure.set) 
                              (println (union #{1 2 3} #{3 4 5}))
                              (use 'incanter.core)
                              (println (factorial 5))) }
      :dependencies [[org.clojure/clojure "1.4.0"]
                     [incanter/incanter-core "1.3.0-SNAPSHOT"]])
    

    When I fire up lein repl

    $ lein repl
    nREPL server started on port 1121
    REPL-y 0.1.0-beta10
    Clojure 1.4.0
        Exit: Control+D or (exit) or (quit)
    Commands: (user/help)
        Docs: (doc function-name-here)
              (find-doc "part-of-name-here")
      Source: (source function-name-here)
              (user/sourcery function-name-here)
     Javadoc: (javadoc java-object-or-class-here)
    Examples from clojuredocs.org: [clojuredocs or cdoc]
          (user/clojuredocs name-here)
          (user/clojuredocs "ns-here" "name-here")
    #{1 2 3 4 5}
    120.0
    test.core=>
    
    0 讨论(0)
  • 2021-01-04 04:24

    I sometimes use the :injections option in project.clj to load namespaces. The following example will load the foo.bar namespace when the lein2 command is executed:

    (defproject org.example/sample "0.1.0-SNAPSHOT"
      :description "A sample project"
      :url "http://example.com/FIXME"
      :license {:name "Eclipse Public License"
                :url "http://www.eclipse.org/legal/epl-v10.html"}
      :injections [(use 'foo.bar)])
    
    0 讨论(0)
提交回复
热议问题