1

我有一些 32 位和一些 64 位的 PC 盒。我在所有机器上都保留了 CCL 实现的本地 svn 存储库,并且我在所有机器上都有相同的.bashrc配置.emacs。因此,当我喜欢在 Emacs 中通过 Slime 使用 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*))
...

有任何想法吗?

4

1 回答 1

1

对不起这个愚蠢的问题。我不知道 Elisp 也有像 CL 这样的反引号。所以

(add-to-list 'slime-lisp-implementations `(ccl (,*ccl-command*)))

成功了。

于 2015-11-11T20:58:52.997 回答