在使用ELPA安装后,如何在Emacs中设置Clojure类路径?

der*_*fed 9 emacs clojure classpath elpa

我正在尝试使用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是我需要在这里设置的东西.谢谢你的帮助.

小智 10

正如mac所说,你可以使用

M-x swank-clojure-project
Run Code Online (Sandbox Code Playgroud)

为一个clojure项目建立一个粘液REPL; 该命令将询问您的项目根目录,并将建立一个包含各种目录的类路径,包括src/lib /和resources /(如果存在).

或者,如果您正在使用leiningen,则可以使用该命令在终端中启动它

$ lein swank
Run Code Online (Sandbox Code Playgroud)

从项目根目录中.这将建立一个标准的项目类路径(如上所述).从这里,您可以通过Emacs使用该命令连接到此运行进程

M-x slime-connect
Run Code Online (Sandbox Code Playgroud)

最后我推荐的第三个选项是通过Emacs/slime(with M-x slime-connect)连接到由你自己的shell脚本启动的进程,该脚本指定一组自定义的JVM命令行参数,例如

#!/bin/bash 

java -server -cp "./lib/*":./src clojure.main -e "(do (require 'swank.swank) (swank.swank/start-repl))"
Run Code Online (Sandbox Code Playgroud)

这允许您明确控制VM的启动方式,并且可能类似于您在生产中可能必须执行的操作.