2014-01-20 89 views
4

我正在嘗試使用Clojure來運行我的Leiningen項目。即使LightTable表示它已連接到連接窗格,但它不會執行,除非我手動調用主函數。在LightTable中運行leiningen Clojure項目

project.clj:

(defproject lein-test "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"]] 
    :main lein-test.core) 

core.clj:

(ns lein-test.core) 

(defn -main [& args] 
    (println "asdf")) 

當我EVAL使用Ctrl + Shift + Enter整個文件,我看到nilns並沒有什麼在控制檯中。如果我添加

(-main) 

然後控制檯顯示'asdf'。在命令提示符下輸入lein run會產生預期的行爲。我錯過了什麼?

回答

6

Control + Shift + Enter計算命名空間。

評估命名空間不應運行其任何功能,除非您在頂層調用它們。在給定的代碼庫中,理想情況下應該只有一個函數在頂層調用(通常是-main函數),並且應該不是通過在名稱空間代碼中調用它,而是通過配置調用它。

一切都按預期在這裏工作。爲了方便開發,您可以在文件的註釋塊或臨時部分中調用(-main),或者直接從repl接口調用它。

+0

好的。所以在Light Table中沒有「lein run」相當於? 'lein test'怎麼樣? –

+0

光表不是我的主要編輯,所以可能有信息在那裏我沒有找到,但令人驚訝的是我沒有看到任何東西,除了作者指出插件是正確的方式來做clojure.test集成,我沒有看到說明插件存在。解決方法是加載所有定義測試的名稱空間,並在repl中手動運行'(clojure.test/run-all-tests)'。 – noisesmith

+0

編輯:[這裏是存在的集成水平的信息](https://github.com/LightTable/LightTable/issues/114) – noisesmith