64位window7下配置Clojure+Emacs开发环境

为了学习Clojure,我最近特别在windows下配置了基于EmacsClojure开发环境。把过程做个记录,跟大家分享一下过程不算太复杂,关键是要多使用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回车

       

 

 

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回车


 

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回车

 

安装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代码进行测试和编程了。

文章结束,祝大家玩的开心。

最后的截图:

 

 

posted on 2012-02-20 17:25 巫云 阅读(...) 评论(...) 编辑 收藏

导航

公告

统计