首页 文章

在Emacs中为Clojure设置SLIME和Inferior-Lisp

提问于
浏览
5

SLIME

我一直试图为Clojure设置SLIME . official documentation隐含地假设您知道您使用emacs做了什么 . 您可以在配置文件中添加一堆代码 . 自 I am interested in Clojure for Data Analysis 以来,如果可能的话,我真的不想与Leiningen打交道,但我想要slime所提供的动态环境 .

我已经从 /opt/clojure/ 中的git安装了Clojure,并在 /opt/clojure-contrib 安装了clojure-contrib,我可以获得一个repl . 我在this tutorial之后的`〜/ .bin中安装了swank-clojure,clojure-mode和来自github的slime . 通过在官方文档的评论部分添加一些内容,我改变了一些事情 .

当我用 M-x slime 开始粘液时,我得到一个连续 Polling "/tmp/slime.14113".. (Abort with 'M-x slime-abort-connection'.) .

这是我的 init-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)

Inferior Lisp

我在 .bin/ 中创建了一个名为clj-repl的脚本,该脚本包含java命令以启动repl . 我接着是M-x set-variable inferior-lisp-program /home/wdkrnls/.bin/clj-repl . Emacs抱怨它的类型错误 .

2 回答

  • 1

    使用Clojure的最佳方法是首先安装Leiningen .

    然后安装Swank Clojure作为Leiningen插件 .

    接下来,我建议从 .emacs 剥离当前的自定义Clojure设置,然后安装ELPA,然后在 .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-modeslime (以及 paredit 以获得良好的衡量标准),以及您可能想要的任何其他内容 .

    这应该让你们都准备好在(Leiningen)Clojure项目中使用SLIME . 尽管这里的程序看似复杂,但您可以从项目中创建一个“uberjar”,以便在其他服务器上进行部署,完全没有依赖性麻烦 .

  • 5

    试试这里详述的方法 . 在干净的unix或mac盒子上从头开始设置所有内容需要几分钟:

    http://www.learningclojure.com/2010/08/clojure-emacs-swank-slime-maven-maven.html

相关问题