自己的emacs配置在windows下使用已经很好了,也总结了很多脚本,最近在运行lisp时出现问题,我用的是sbcl和Clozure CL.这两个都是最优秀的开源lisp实现之一.我的配置文件都在我的git仓库目录,这样方便和其他机器上的同步,同样也把quicklisp安装到git仓库,这样不用在其他电脑用时需求下载相应 的库.我的配置文件在http://git.oschina.net/wuhen/emacs-config.
测试LISP步骤:
一,SBCL:
1),打开emacs-client.bat,按CTRL+-,Alt+X,输入slime<ret>sbcl
2),在repl中输入(load "~/quicklisp.lisp")
(quicklisp-quickstart :install) ;;默认安装到HOME变量指向的位置
(ql:add-to-init-file) ;;在HOME目录中添加.sbclrc文件
3),当再次启动sbcl时一切都正常,ql库已经自动加载了.
二,Clozure CL
1),在HOME变量指向的目录中添加.ccl-init.lisp文件,并加入
;;; The following lines added by ql:add-to-init-file: #-quicklisp (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)))) (when (probe-file quicklisp-init) (load quicklisp-init)))
2),在emacs中按CTRL+-,Alt+X,输入slime<ret>ccl
3),一切正常,ql库自动加载
emacs启动文件如下:
@echo off set EMACS_HOME=c:/common-tools/emacs-23.4 rem set HOME=c:/common-tools/emacs-23.4 set HOME=D:/GitRepository/emacs-config-git set SBCL_HOME=c:/common-tools/lisp/sbcl set CCL_DEFAULT_DIRECTORY=c:/common-tools/lisp/ccl rem ccl默认采用USERPROFILE做为用户HOME目录,在此设置环境变量改变CCL的HOME目录,以便和sbcl一起使用quicklisp. set USERPROFILE=%HOME% set EMACS_SERVER_FILE=%HOME%/.emacs.d/server/server set PATH=%PATH%;%EMACS_HOME%/bin;%SBCL_HOME%;%CCL_DEFAULT_DIRECTORY%;%HOME% rem runemacs --debug-init RunHiddenConsole.exe "c:/common-tools/emacs-23.4/bin/emacsclientw.exe" --alternate-editor="c:/common-tools/emacs-23.4/bin/runemacs.exe" "%1"
如果想从右键菜单打开则执行emacs.reg即可.
总结说明:
1,sbcl和ccl在windows中默认的用户目录是根据环境变量HOME和USERPROFILE来确定的,sbcl是HOME变量,CCL是USERPROFILE变量,如果不指定则默认为C:\Documents and Settings\XXX(windows XP).
2,SBCL和CCL的主目录由环境变量SBCL_HOME和CCL_DEFAULT_DIRECTORY指定.
3,使用方法:直接将git clone到本地,修改bat和reg文件对应的路径即可.
在此要非常感谢@FreeBlues不厌其烦的回答我的问题http://www.oschina.net/question/251613_119214.经测试是因为我手动创建.ccl-init.lisp时在初始化文件第一行加入了(format t (user-homedir-pathname))导致,改为(princ "Clozure CL init file dir is ")
(prin1 (user-homedir-pathname))即可 (卧操,这么低级的错误)