首頁 > 軟體

Emacs 安裝 clojure開發環境

2020-06-16 17:47:03

安裝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

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-01/127416.htm


IT145.com E-mail:sddin#qq.com