我有一些32位和64位的PC盒。我在所有这些上保留了CCL实现的本地svn回购,并且我在所有框上都有相同的.bashrc
和.emacs
配置。因此,当我想通过Slime在Emacs中使用CCL时,我只需在前缀M-- M-x slime
后输入,然后输入ccl32
和ccl64
,因为我在.emacs
中添加了类似的内容配置前一段时间。
(setq slime-lisp-implementations
`((sbcl ("/usr/bin/sbcl" "--noinform" "--no-linedit"))
(ccl32 ("/path/to/32bit/ccl/lx86cl"))
(ccl64 ("/path/to/64bit/ccl/lx86cl64"))
(abcl ("java" "-jar" "/usr/local/share/java/abcl-bin-1.3.3/abcl.jar"))))
我的问题是我只想在.emacs
中设置一些条件并让它决定哪个CCL可以在运行中运行。所以我写了这样的东西。
(defvar *ccl-command*)
(cond ((not (null (string-match ".*64.*" system-configuration)))
(setq *ccl-command* "/path/to/64bit/ccl/lx86cl64"))
((not (null (string-match ".*86.*" system-configuration)))
(setq *ccl-command* "/path/to/32bit/ccl/lx86cl")))
它几乎可以解决这个问题,但当我尝试将此变量放在slime-lisp-implementations
之上时,它就不起作用了:
...
(ccl (*ccl-command*))
...
有什么想法吗?
答案 0 :(得分:1)
抱歉这个愚蠢的问题。我不知道Elisp有像CL那样的反击。所以
(add-to-list 'slime-lisp-implementations `(ccl (,*ccl-command*)))
做了这个伎俩。