Emacs(Cocoa Emacs)和Aquamacs在Mac OS X上运行Clojure的比较

12

到目前为止,我一直使用Aquamacs,现在我需要安装并运行ClojureSLIME。我通过谷歌搜索了一些方法,在Aquamacs上使用Clojure和SLIME,但是没有成功。

问题:

  1. 是否有可能在Aquamacs上安装Clojure?或者你能猜出为什么Clojure在Aquamacs上不能正常工作吗?
  2. Emacs和Aquamacs无法共享相同的ELPA,这是正常的吗?
  3. 是否可以使用ELPA在Emacs/Aquamacs上安装Conjure?
  4. 我被告知可以使用'lein swank'作为服务器运行,你知道如何做吗?

我尝试过的步骤(部分成功):

我尝试使用Mac OS X Emacs,通过按照以下步骤,我可以使其正常工作。我的意思是,我可以在SLIME下运行Clojure。

Mac OS X的Emacs

第1步) 安装ESK

  • 复制所有文件到.emacs.d目录下
  • 添加以下代码到.emacs文件中并重新启动
    (when
        (load
         (expand-file-name "~/.emacs.d/package.el"))
      (package-initialize))

第2步) 使用ELPA安装

  • M-x package-list-packages 选择要安装的包
  • 安装
    • clojure-mode, clojure-test-mode
    • slime, slime-repl
    • swank-clojure
  • M-x slime来安装Clojure。
  • 将以下代码添加到.emacs中并重新启动。
;; clojure mode
(add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/clojure-mode-1.7.1")
(require 'clojure-mode-autoloads)
(add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/clojure-test-mode-1.4")
(require 'clojure-test-mode-autoloads)
;; slime ;(setq inferior-lisp-program "/Users/smcho/bin/clojure") (add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/slime-20100404") (require 'slime-autoloads) (add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/slime-repl-20100404") (require 'slime-repl-autoloads)
;; swank-clojure (add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/swank-clojure-1.1.0") (require 'slime-repl-autoloads)

Aquamacs

现在我可以在Emacs上使用Clojure,我尝试了同样的(或非常相似的)方法来再次在Aquamacs上运行Clojure。

步骤1)安装ESK for Aquamacs

  • 将文件复制到~/Library/Preference/Aquamacs Emacs
  • 修改“~/Library/Preferences/Aquamacs Emacs/Preferences.el”以添加以下内容
(setq kitfiles-dir (concat (file-name-directory
                    (or (buffer-file-name) load-file-name)) "/aquamacs-emacs-starter-kit"))
; set up our various directories to load (add-to-list 'load-path kitfiles-dir) (require 'init)

步骤2)

按照之前的步骤安装所有相同的软件包,但是"M-x slime"会出现以下错误消息:"Symbol's function definition is void: define-slime-contrib"

ELPA

我试图将Emacs和Aquamacs的软件包组合在一起,但它们无法组合。我以为我可以使用ELPA本身,而不是从ESK共享它。

结果并不好,因为ELPA无法下载swank-conjure软件包。

成功-使用'lein swank'运行Aquamacs/Clojure。

请参考此链接


我有emacs23.2.1和基于emacs23.2.1的Aquamacs 2.0。我能够在两者上成功地使用package-list-packages。ELPA能够看到两个emacsen都使用了ERC 5.2和其他几个软件包。如果你指的是共享相同的ELPA,那么我想这是可能的。 - vpit3833
@vpit3833:ELPA 是 ESK 和 Aquamacs 的一部分。当我使用 ESK/ELPA 安装某些包后,启动 Aquamacs 时,似乎会修改 package.el 文件,导致emacs无法读取它。原始(下载的)ELPA 应该由 emacs/Aquamacs 共享,但是我无法测试它,因为如我所述,ELPA 本身在我的机器上无法正常工作。 - prosseek
我建议你将“问题”部分放在描述尝试过的内容之前。这有助于读者集中精力看清楚你实际上想要做什么,而不是从步骤描述中推断出来。 - A. Levy
3个回答

5
Aquamacs 肯定可以用于 Clojure,因为 Clojure 的作者使用它。然而,我使用 Emacs,在执行上述 Emacs 部分的步骤后,建议您查看 labrepl。

http://github.com/relevance/labrepl

如果您没有安装Leiningen,可以在labrepl自述文件的说明中找到获取和安装它的链接。在学习如何为Clojure编程设置环境时,我发现它非常有帮助。您可以拆开labrepl中的project.clj文件并轻松地组合它的工作方式。更不用说内置Web应用程序中的课程和培训了。
如果您想使用lein swank:
确保您已经安装了Leiningen。在您的project.clj dev依赖项中,您需要有一个类似于以下条目的条目:
[leiningen/lein-swank "1.1.0"]

http://clojars.org/leiningen/lein-swank

在执行lein deps之后,您应该能够运行lein swank,然后在Emacs中运行M-x slime-connect,并通过默认设置按Enter即可。

如果您要选择这种方法,请直接访问leiningen链接,这样您就可以跳过labrepl存储库:http://github.com/technomancy/leiningen


我安装了Leiningen,可以运行'lein swank'。使用'M-x slime-connect',我可以看到'user>'提示符,但它不会计算像'(+ 3 4)'这样的方程。它什么也不返回。 - prosseek
嗯,当我使用ESK时,我没有必要在我的Emacs配置文件中添加任何Lisp代码。也许你在那里做了什么导致了问题。 - Brandon Henry

2
我发现这篇文章是最简单的设置方法,适用于最新版本。以下是一个快速摘要,假设您已经安装了leiningen。

安装swank-clojure插件。

$ lein plugin install swank-clojure 1.3.2

创建你的Clojure项目
$ lein new test-project
$ cd test-project
$ lein deps

然后在Emacs中打开你项目中的一个Clojure文件,运行clojure-jack-in命令。

M-x clojure-jack-in

您现在处于带有Clojure的粘液缓冲区,并加载了项目所需的依赖项。


2

Paul Barry讲解如何使用Aquamacs和Clojure。

只需将以下代码添加到.emacs文件中:

(add-to-list 'load-path "~/clojure/clojure-mode")
(setq inferior-lisp-program "/Users/smcho/bin/clj")
(require 'clojure-mode)
(setq auto-mode-alist
  (cons '("\\.clj\\'" . clojure-mode)
     auto-mode-alist))
(add-hook 'clojure-mode-hook
  (lambda ()
     (define-key clojure-mode-map "\C-c\C-e" 'lisp-eval-last-sexp)))

运行'M-x clojure-mode',然后按C-c C-z即可进入REPL模式。

“在Emacs上同时运行Clojure和其他Lisp”中所述,可以在Aquamacs上同时使用Clojure/Lisp。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接