最近花点时间了解了一下Erlang;下面综合网上的一些文章介绍一下搭建一个Emacs + Distel的环境步骤。
1. 首先安装Erlang( http://www.erlang.org/download.html)和Emacs(到 http://www.gnu.org/software/emacs/ 下载emacs的Windows编译版本),安装过程与一般应用软件一样。这里为了避免路径中空格带来麻烦,Erlang的安装路径中最好不要带空格 (如最好不要有:D:/Program Files/erl5.7.1这样的路径)。
2.然后配置环境变量(我的电脑->高级->环境变量->系统变量->新建):
ERL_HOME=D:/erl5.7.1
PATH变量一般情况下已存在,只需在其下面加入:%ERL_HOME%/bin即可,注意与前面的内容用”;”隔开。
HOME=E:/erlang(这个路径是配置erlang工程的目录)
解压缩Distel到D:/erl5.7.1/lib/distel(这个路径本来可以随意,但是为了便于管理,建议将它放到erlang的lib下面)。
在E:/erlang(环境变量HOME)创建一个名为“.emacs”的文本文件,有童鞋说没法建立,用记事本当然不能建立,用之前安装好的Emacs就比较容易了:点击Emacs菜单栏:Options->任意选项;然后再选择Options下的Save Options选项;此时在E:/erlang(环境变量HOME)下创建了一个目录:”.emacs.d”和一个文档文件:” .emacs”。用Emacs打开” .emacs”文件,添加如下内容(下面的路径根据您实际的安装路径进行调整,深蓝色字体是调整的对象) 如下:
;; Erlang mode
(setq load-path (cons "D:/erl5.7.1/lib /tools-2.6.4 /emacs" load-path))
(setq erlang-root-dir "D:/erl5.7.1 ")
(setq exec-path (cons "D:/erl5.7.1 /bin" exec-path))
(require 'erlang-start)
;; Distel
(let ((distel-dir "D:/erl5.7.1 /lib/tools-2.6.4 /elisp"))
(unless (member distel-dir load-path)
(setq load-path (append load-path (list distel-dir)))))
(require 'distel)
(distel-setup)
;; Some Erlang customizations
(add-hook 'erlang-mode-hook
(lambda ()
;; when starting an Erlang shell in Emacs, default in the node name
(setq inferior-erlang-machine-options '("-sname" "emacs"))
;; add Erlang functions to an imenu menu
(imenu-add-to-menubar "imenu")))
;; A number of the erlang-extended-mode key bindings are useful in the shell too
(defconst distel-shell-keys
'(("/C-/M-i" erl-complete)
("/M-?" erl-complete)
("/M-." erl-find-source-under-point)
("/M-," erl-find-source-unwind)
("/M-*" erl-find-source-unwind)
)
"Additional keys to bind when in Erlang shell.")
(add-hook 'erlang-shell-mode-hook
(lambda ()
;; add some Distel bindings to the Erlang shell
(dolist (spec distel-shell-keys)
(define-key erlang-shell-mode-map (car spec) (cadr spec)))))
别忘记将以上路径更换为自己实际的路径 。注意路径分隔符 是正斜杠“/” 而不是反斜杠“/”。这样emacs启动时可以自动加载erlang mode和distel的配置文件。
3. 再在E:/erlang(环境变量HOME)建立一个名为“.erlang.cookie”的文本文件(用Emacs建立),内容随意。
这个文件是Erlang的Magic Cookie文件。由于Distel需要和运行的erlang节点进行通信,因此这一步不可少。
4. 最后创建一个Emacs的快捷方式,放在桌面或者任务栏快速启动,右击快捷方式选“属性”,将“起始位置”设为"E:/erlang ”或"%HOME% "(HOME环境变量)。这样Emacs启动后可以直接定位到erlang工程的目录。
启动Emacs,打开一个erl文件 ,应该能看到多了一个“Erlang”菜单,菜单下有一个Distel的子菜单 (注意:不打开一个erl文件是看不到“Erlang”菜单的。)如图:
http://hi.csdn.net/space-11077-do-album-picid-546529.html
至此,环境全部配置完成。
另:
刚开始用emacs,可能会被buffer吓到:打开Emacs到处都是buffer;不要介意,简单介绍一下这个吓人的buffer。
其实buffer就是file。所以 ,你大可把buffer当作是file。但是叫buffer更精确。比方说你用文本编辑器编辑一个文档,我们都用New去建一个新的文档,还没存的时候就叫“未命名文档”之类的。其实此时硬盘还没将文本记录下来,怎么能叫文本?所以,emacs称之为buffer。
再深入一点,buffer的名字和文本的名字通常一样,但也可以不一样。emacs的buffer可以有很多种展现模式,有些buffer还真的不准备变成档案的。
因此,buffer的含义比文本广。不过我们初学,就把buffer当文本好了。
如上所述,我刚开始被emacs吓到的就是buffer。更精确的是,我是被一开始进去出现的这些字吓到:
;; This buffer is for notes you don't want to save, and for Lisp evaluation.
;; If you want to create a file, visit that file with Cx Cf,
;; then enter the text in that file's own buffer.
其实这只是说这是个不会被储存的buffer。其实我们刚开始用,也许就是想乱打一些东西试试,也不想存储。岂不正合心意?
现在就可以试着在这个buffer里打字。你会发现,其实操作方式就是和你想的一样。用方向键就可以控制游标上下左右移动。
现在我们要编一个文档。其实上面那串吓人的英文已经告诉你了怎么做了。就是用:
Cx Cf (建立或打开新档∕旧档)
这里大写的C是按 Control键的意思。所以 Cx Cf就是先按Control-x,再按Control-f。这时Emacs就会叫你输入档名。你就随便叫个比方说 foo.txt或是你自己要写的档名。
打敲到一半,要存档,就是:
Cx Cs (存档)
要退出,就是:
Cx Cc (结束emacs)
只要会这些,基本上可以开始用Emacs编辑Elang代码了!
需要进一步学习Emacs及distel的使用请参看一下资源的内容(当然也是网上搜集的,下载不需要积分):
http://download.csdn.net/source/2365059
http://download.csdn.net/source/333008
参考文章:
http://bc.tech.coop/blog/070528.html
http://casey-lai.appspot.com/blog/37
http://pro-cyber.javaeye.com/blog/550814