Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置SLIME&;Emacs中Clojure的下Lisp 粘液_Emacs_Clojure_Slime_Swank - Fatal编程技术网

设置SLIME&;Emacs中Clojure的下Lisp 粘液

设置SLIME&;Emacs中Clojure的下Lisp 粘液,emacs,clojure,slime,swank,Emacs,Clojure,Slime,Swank,我对Clojure和emacs都是新手,我一直在尝试为Clojure设置SLIME。隐式地假设您知道如何使用emacs。您可以在配置文件中插入的不仅仅是一堆代码。由于我对Clojure进行数据分析感兴趣,如果可能的话,我真的不想与Leiningen打交道,但我想要slime提供的动态环境 我已经从git在/opt/Clojure/中安装了Clojure,在/opt/Clojure-contrib中安装了Clojure-contrib,我可以获得一个repl。我在下面的`~/.bin中安装了来自g

我对Clojure和emacs都是新手,我一直在尝试为Clojure设置SLIME。隐式地假设您知道如何使用emacs。您可以在配置文件中插入的不仅仅是一堆代码。由于我对Clojure进行数据分析感兴趣,如果可能的话,我真的不想与Leiningen打交道,但我想要slime提供的动态环境

我已经从git在
/opt/Clojure/
中安装了Clojure,在
/opt/Clojure-contrib
中安装了Clojure-contrib,我可以获得一个repl。我在下面的`~/.bin中安装了来自github的swank clojure、clojure模式和slime。当这不起作用时,我改变了一些事情,从官方文档的评论部分添加了一些东西

当我用
M-x slime
启动slime时,我得到一个连续的
轮询/tmp/slime.14113“。。(使用“M-x slime中止连接”中止)。

这是我的初始化clj.el

;; clojure-mode
(add-to-list 'load-path "~/.bin/clojure-mode")


;; swank-clojure
(add-to-list 'load-path "~/.bin/swank-clojure")

(setq swank-clojure-jar-path "/opt/clojure/clojure.jar"
  swank-clojure-extra-classpaths (list
                  "~/.bin/swank-clojure/src/swank"
                  "/opt/clojure/clojure-contrib/target/clojure-contrib-1.2.0-SNAPSHOT.jar"))

(require 'swank-clojure)

;; slime
(eval-after-load "slime" 
  '(progn (slime-setup '(slime-repl))))

(add-to-list 'load-path "~/.bin/slime")
(require 'slime)
(eval-after-load 'slime '(setq slime-protocol-version 'ignore))
  (slime-setup '(slime-repl))
(require 'clojure-mode)
(require 'clojure-test-mode)
以下是我在ants.clj打开时调用它时得到的错误:

(progn (load "/home/kca/.bin/slime/swank-loader.lisp" :verbose t) (funcall (read- from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.14113" :coding-system "iso-latin-1-unix"))

Clojure 1.2.0-master-SNAPSHOT
user=> java.lang.Exception: Unable to resolve symbol: progn in this context (NO_SOURCE_FILE:1)
下口齿不清
我在
.bin/
中编写了一个名为cljrepl的脚本,它保存了启动repl的java命令。然后,我将M-x设置为lisp程序/home/wdkrnls/.bin/clj repl。Emacs抱怨它的类型错误。

使用Clojure的最佳方法是从安装开始

然后作为Leiningen插件安装

接下来,我建议从
.emacs
中剥离当前的自定义Clojure设置,然后安装,然后在
.emacs
文件中设置以下初始化代码:

;; Find this line, added by ELPA:
(require 'package)
;; and add the following expression:
(add-to-list 'package-archives
             '("marmalade" . 
               "http://marmalade-repo.org/packages/") t)
;; ... and the rest of the ELPA init code
(package-initialize)
然后,运行
package list packages
并安装
clojure模式
slime
(以及
paredit
),以及您可能需要的任何其他软件


这应该让你们所有人都设置好并准备好在(莱宁根)Clojure项目中使用SLIME。尽管这里的过程看起来很复杂,但您可以从项目中创建一个“uberjar”来部署到其他服务器上,而无需任何依赖性方面的麻烦。

尝试此处详述的方法。在干净的unix或mac机箱上从头开始设置所有内容需要几分钟:


关于劣质lisp设置:如果正在执行
M-x设置变量劣质lisp程序
,后跟脚本路径,请确保将路径用双引号括起来;否则,它将不会作为字符串读入,Emacs将抱怨结果类型(可能是符号)。如果这没有帮助,你能提供一些关于你的脚本和你在Emacs(或
~/.Emacs
/
~/.Emacs.d/init.el
)中做什么的更多细节来将它设置为你的低级lisp程序吗?谢谢Michal。现在它开始工作了。我有两个问题,第一个是你说的。第二个是,当我在脚本的路径上加引号时,我没有杀死旧的低级lisp进程,因此看起来好像发生了其他事情。谢谢你详细的回复John,但我对学习Clojure的功能感兴趣。所以我不需要在服务器上部署任何东西。如果可以设置emacs+slime+clojure模式,而不必费心定义一个“项目”,那将是非常理想的。有了Clojure,建立一个列宁根项目就很容易建立Slime。我建议您这样做,即使您只是使用它来引导到repl。基本上,您可以创建一个空项目,只需在命令提示符下单击“lein swank”,就可以了。您可以在没有项目的情况下使用
lein repl
lein swank
(它将设置一个类路径,在
.lib/
目录中加载JAR,在
.src/
目录中加载Clojure代码),但是创建一个项目就像创建一个新项目一样容易。Swank Clojure文档说这个项目已经被弃用了,应该可以使用nREPL。nREPL更易于安装,因为您可以使用包管理器。