安裝CIDER模塊
還是比較簡單的,就是用list-packages查找,找到CIDER後,安裝。
直接用官方文檔的命令安裝會失敗,還是用上面的方式。
使用middleware匹配版本
工程的project.clj文件中添加倒數第二行
(defproject project1 "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.7.0"]
[clj-http "2.0.0"]]
:plugins [[cider/cider-nrepl "0.10.0-SNAPSHOT"]]
:main project1.core)
啟動並連接REPL
打開項目源代碼文件core.clj
然後emacs中M-x 運行命令cider-jack-in, 會啟動cider-nrepl連接repl進程。出現兩個buffer, 上面的是源代碼,下面的是repl
當看到下面的這段就好。cider-nrepl做了版本匹配的工作。
; CIDER 0.10.0snapshot (package: 20151013.1548) (Java 1.7.0_79, Clojure 1.7.0, nREPL 0.2.10)
project1.core>
在源代碼buffer鍵入一行代碼,光標移動到行尾,按下C-x C-e 運行,結果會顯示在repl buffer中。
運行程序
我們可以在REPL中運行程序,可以輸入(-main)運行main函數
; CIDER 0.10.0snapshot (package: 20151013.1548) (Java 1.7.0_79, Clojure 1.7.0, nREPL 0.2.10)
project1.core> (-main)
Hello, World!
nil
0
nil
project1.core> (-main "a")
Hello, World!
(a)
1
nil
project1.core>
編譯程序
可以繼續修改core.clj文件,添加新的函數,然後用C-c C-k編譯文件,之後再運行程序。
比如加下面一個函數,然後編譯,再運行:
(defn train
[]
(println "Choo choo!"))
運行結果:
project1.core> (train)
Choo choo!
nil
智能提示
mini buffer裡面會提示可能的選擇,比如輸入(-main的時候,mini buffer會顯示剩余的參數
在init.el中添加這段,可以使用company-mode實現自動補全
(add-hook 'cider-repl-mode-hook #'company-mode)
(add-hook 'cider-mode-hook #'company-mode)
其他快捷鍵
1. C-↵ 會加上右括號,並對表達式求值(evaluate)
獲取錯誤信息
可以用命令(take) 命令,退出stacktrace buffer用q鍵
以後可以進入*cider-error* buffer查看歷史錯誤信息
其他信息參考官方文檔
使用Clojure構建原生Android應用 http://www.linuxidc.com/Linux/2015-09/123628.htm
Clojure:解決Selmer與AngularJS的 標簽混淆問題 http://www.linuxidc.com/Linux/2015-01/112321.htm