天天看點

64位window7下配置Clojure+Emacs開發環境

原文位址

    為了學習Clojure,我最近特别在windows下配置了基于Emacs的Clojure開發環境。把過程做個記錄,跟大家分享一下。過程不算太複雜,關鍵是要多使用Google來解決問題,有些版本問題比較難解決,耐心多嘗試就能成功。很多同學都說使用linux更合适等等,我覺得确實有道理,但windows畢竟是很多程式員每天工作必用的工具,使用起來友善的多,是以還是有必要折騰一把。

開始了,首先我的作業系統是64位的windows7,英文版。随着現在記憶體的價格下降,64位win7系統已經開始成為程式員的主要工作平台,是以我們配置的開發環境也要能支援64位win7才算合格。

具體步驟:

1.   安裝jdk,因為Clojure是基于JVM的語言,是以java開發環境肯定是必裝的。我們直接下載下傳Oracle官方的64位安裝包,1.7的最新版本:jdk-7u2-windows-x64.exe。下載下傳完畢後輕按兩下安裝即可。

安裝完畢,添加環境變量JAVA_HOME,内容為jdk的系統路徑。

例如:

JAVA_HOME => D:\Program Files\Java\jdk1.7.0_02

PATH =>  D:\Program Files\Java\jdk1.7.0_02\bin

打開終端,測試,輸入java –version回車

64位window7下配置Clojure+Emacs開發環境

2.   安裝maven2,maven是java開發常用的項目建構工具,提供jar包的管理功能,因為leiningen需要使用maven的軟體倉庫進行包的管理,是以,我們先要安裝maven2。從官方下載下傳壓縮包,我下載下傳的是2.2.1版

下載下傳網站:http://maven.apache.org/download.html

下載下傳完畢,解壓到本地目錄,我放置在D:\new\apache-maven-2

添加環境變量:各位同學請輸入自己的路徑

M2_HOME => D:\new\apache-maven-2

M2 => D:\new\apache-maven-2\bin

MAVEN_OPTS => -Xms256m -Xmx512m

PATH => %M2%

打開終端,測試,輸入mvn --version回車

64位window7下配置Clojure+Emacs開發環境

3.   安裝leiningen,leiningen是基于Clojure的項目建構工具,可以為Clojure項目打包解決項目依賴,這也是我們這次配置中要使用的主要工具。

下載下傳leiningen的windows壓縮包和jar包(這裡注意,不要用1.62的安裝腳本安裝,運作後面步驟時會出現錯誤),我下載下傳的是:

leiningen-1.5.2-win.zip和leiningen-1.7.0-SNAPSHOT-standalone.jar

下載下傳網站:https://github.com/technomancy/leiningen/downloads

下載下傳完畢,leiningen-1.5.2-win.zip解壓縮到本地目錄。我放置在D:\new\lein,同時把leiningen-1.7.0-SNAPSHOT-standalone.jar拷貝到這個檔案夾下面

Path => D:\new\lein

LEIN => D:\new\lein

LEIN_JAR => d:\new\lein\leiningen-1.7.0-SNAPSHOT-standalone.jar

打開終端,測試,輸入 lein version回車

64位window7下配置Clojure+Emacs開發環境

安裝leiningen插件:

swank-clojure,用于Emacs的repl插件,內建了SLIME功能。使用指令

lein plugin install swank-clojure 1.4.0回車

lein會自動下載下傳相關依賴并安裝swank-clojure

至此,lein安裝完畢

4.   安裝Emacs,Emacs是一個多功能的文本編輯工具,可謂大名頂頂,是Hacker們的最愛。我們下載下傳最新的Emacs2.4版。

下載下傳位址:https://code.google.com/p/emacs-for-windows/updates/list

壓縮包解壓到本地路徑。

安裝Clojure插件clojure-mode

下載下傳位址https://github.com/jochu/clojure-mode

隻下clojure-mode.el即可,下載下傳完畢放到Emacs的預設插件目錄下面

在win7下,Emacs的預設插件目錄是C:\Users\使用者名\AppData\Roaming\.emacs.d\

由于AppData是隐藏檔案,要注意。我放置的路徑是C:\Users\Adam\AppData\Roaming\.emacs.d\clojure-mode\clojure-mode.el

Emacs的預設配置檔案夾是C:\Users\使用者名\AppData\Roaming,配置檔案名是.emacs。如果檔案不存在,可以手動建立一個。

編輯.emacs檔案,添加如下内容:

(add-to-list 'load-path "~/.emacs.d")

(add-to-list 'load-path "~/.emacs.d/clojure-mode")

(require 'clojure-mode)

其他插件可選擇性的安裝,關于Emacs插件的安裝和配置,這裡就不多講了,大家多Google即可。記住一點,開源東西bug不少,版本相容性差,大家一定要耐得住性子才能成功啊。堅持,再堅持,哈哈,痛苦的過程。

推薦安裝的插件:auto-complete, paredit,color-theme

全部的配置如下:

 1 (add-to-list 'load-path "~/.emacs.d")

 2 (add-to-list 'load-path "~/.emacs.d/clojure-mode")

 3 (add-to-list 'load-path "~/.emacs.d/color-theme")

 4 (add-to-list 'load-path "~/.emacs.d/auto-complete")

 5 

 6 (require 'clojure-mode)

 7 

 8 (require 'color-theme)

 9 (color-theme-initialize)

10 (color-theme-xemacs)

11 

12 (require 'auto-complete-config)

13 (ac-config-default)

14 (add-to-list 'ac-dictionary-directories "~/.emacs.d/auto-complete/dict")

15      

16 (autoload 'paredit-mode "paredit"

17       "Minor mode for pseudo-structurally editing Lisp code." t)

18     (add-hook 'emacs-lisp-mode-hook       (lambda () (paredit-mode +1)))

19     (add-hook 'lisp-mode-hook             (lambda () (paredit-mode +1)))

20     (add-hook 'lisp-interaction-mode-hook (lambda () (paredit-mode +1)))

21     (add-hook 'scheme-mode-hook           (lambda () (paredit-mode +1)))

22     (add-hook 'clojure-mode-hook           (lambda () (paredit-mode +1)))

23     (add-hook 'slime-repl-mode-hook (lambda () (paredit-mode +1)))

24 (defun override-slime-repl-bindings-with-paredit ()

25             (define-key slime-repl-mode-map

26                 (read-kbd-macro paredit-backward-delete-key) nil))

27                 (add-hook 'slime-repl-mode-hook 'override-slime-repl-bindings-with-paredit) 

28 

29 (custom-set-variables

30  ;; custom-set-variables was added by Custom.

31  ;; If you edit it by hand, you could mess it up, so be careful.

32  ;; Your init file should contain only one such instance.

33  ;; If there is more than one, they won't work right.

34 '(tool-bar-mode nil))

35 (custom-set-faces

36  ;; custom-set-faces was added by Custom.

37  ;; If you edit it by hand, you could mess it up, so be careful.

38  ;; Your init file should contain only one such instance.

39  ;; If there is more than one, they won't work right.

40 '(default ((t (:inherit nil :stipple nil :background "gray80" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 113 :width normal :foundry "outline" :family "Consolas")))))

41 

42 (show-paren-mode 1)

43 (setq visible-bell nil)

44 (setq scroll-step 1

45         scroll-margin 3

46         scroll-conservatively 10000)

47 (global-linum-mode 'linum-mode) ;

48 (set-scroll-bar-mode nil) ;去掉滾動條

49 (auto-save-mode nil) ;;禁止自動儲存

50 (global-set-key (kbd "C-|") 'other-window);

51 (setq frame-title-format

52       '("%S" (buffer-file-name "%f"

53                    (dired-directory dired-directory "%b"))))

5.   好了,安裝完畢,經過一大堆的配置,現在我們要開始享受勞動成果了。

1) 建立一個檔案夾,我用的是D:\new\ClojCodes\

2) 進入終端,輸入以下指令:

cd d: 回車

cd new\ClojCodes\ 回車

lein new Project1回車

3) 這時,會建立一個D:\new\ClojCodes\ Project1的項目檔案夾

我們打開這個檔案下的project1.clj把内容修改為:

1 (defproject SwankProject "1.0.0-SNAPSHOT"

2   :description "FIXME: write description"

3   :dependencies [[org.clojure/clojure "1.3.0"]

4                  [org.clojure/clojure-contrib "1.2.0"]])

儲存。

4) 終端下進入這個檔案夾,輸入

lein deps回車

lein将通過maven的倉庫管理,自動下載下傳依賴的jar包并更新

可能需要較長時間的等待,請耐心。

5) 啟動Emacs,打開我們修改過的project1.clj,按下alt+x,Emacs的表示法為M-x,在提示處輸入clojure-jack-in,稍候片刻,就會出現slime的repl界面,然後我們可以輸入簡單的clojure代碼進行測試和程式設計了。

文章結束,祝大家玩的開心。

最後的截圖: 

64位window7下配置Clojure+Emacs開發環境