我正在使用ELPA在Emacs中设置的Clojure REPL中添加路径到我的类路径.显然,这不是$CLASSPATH环境变量,而是swank设置的swank-clojure-classpath变量.因为我使用ELPA来安装Swank,Clojure等,所以有大量的.el文件可以处理一切,而不是我的.emacs文件.不幸的是,我现在不知道如何改变类路径.
我尝试在我的.emacs中的ELPA之前和之后使用(setq’swank-clojure-extra-classpaths(list …)),我已经尝试将路径直接添加到swank-clojure-classpath中. emacs,.emacs.d / init.el和.emacs.d / user / user.el,但没有任何作用.
我最终要做的是添加当前目录“.”和我保存我的Clojure程序的目录.我假设swank-clojure-classpath是我需要设置的东西.谢谢你的帮助.
解决方法
正如Mac所说,你可以使用
M-x swank-clojure-project
建立一个泥土REPL到clojure项目;该命令将询问您的项目根目录,并将建立一个类路径,其中包含各种目录,包括src / lib /和resources /(如果存在).
或者,如果您使用leiningen,您可以使用命令在终端中启动
$lein swank
从你的项目根目录里面.这将建立一个标准的项目类路径(如上).从这里你可以通过Emacs命令连接到这个正在运行的进程
M-x slime-connect
最后,我建议的第三个选项是通过Emacs / slime(与M-x slime-connect)连接到由您自己的shell脚本启动的进程,该过程指定了一组自定义的JVM命令行参数.
#!/bin/bash java -server -cp "./lib/*":./src clojure.main -e "(do (require 'swank.swank) (swank.swank/start-repl))"
这允许您明确控制VM的启动方式,并且可能类似于您在生产中可能需要做的工作.