如何设置Aquamacs进行Clojure开发?

31

我曾多次尝试使用Emacs进行Clojure开发,根据各种博客文章、视频教程和教学材料来尝试,但总有些问题出现了 - 按键无效、不兼容的版本等等,最终我又回到了Vim。但是我知道我想要Paredit和SLIME。

所以,这次我将尝试通过强大的Stack Overflow™社区支持再次尝试。

我希望这个问题的答案能够保持最新,并作为像我一样的初学者的参考。

我需要的是:

  • Clojure的最新稳定版本
  • 最近的Aquamacs版本(如果它对Rich Hickey足够好,那对我也足够好)
  • Clojure Mode
  • SLIME/SWANK
  • Paredit
  • 还有其他必备的吗?

提供安装以上软件的逐步说明将是很好的 - 最好是以shell脚本格式。我也想了解如何开始进行最常见的Clojure相关操作(包括按键绑定),并包含指向文档和速查表的链接。


显然那是错误的clojure-mode版本。我尝试了git://github.com/technomancy/clojure-mode.git。执行了m-x clojure-install,它说这个函数已经被swank-clojure取代了。不知道如何安装它。 - Michiel de Mare
1
是否激活?尝试使用 M-x paredit-mode。 - mac
显然它没有被激活 - 如何使其默认处于活动状态?Aquamacs 的首选配置文件是什么(.emacs已经被弃用了)? - Michiel de Mare
你可以使用.emacs,这就是我所做的。 - mac
你尝试过 M-x swank-clojure-project 吗? - mac
显示剩余4条评论
6个回答

7

以下是我设置它们的步骤,而不使用ELPA。希望这有所帮助。

使用MacPorts获取SLIME

sudo port -v install slime

获取 paredit

curl -O http://mumble.net/~campbell/emacs/paredit.el

获取Clojure和Clojure-contrib

  • 使用MacPorts
sudo port -v install clojure clojure-contrib
  • 或直接下载
curl -O http://build.clojure.org/snapshots/org/clojure/clojure/1.1.0-master-SNAPSHOT/clojure-1.1.0-master-20091202.150145-1.jar
curl -O http://build.clojure.org/snapshots/org/clojure/clojure-contrib/1.1.0-master-SNAPSHOT/clojure-contrib-1.1.0-master-20091212.205045-1.jar

获取Clojure-mode和Swank-clojure(Emacs侧)

git clone http://github.com/technomancy/clojure-mode.git
git clone http://github.com/technomancy/swank-clojure.git

获取 swank-clojure(Clojure端)

  • 要么下载预编译的jar文件
curl -O http://repo.technomancy.us/swank-clojure-1.1.0.jar
  • 要么从源代码构建(假设已安装 lein)
cd path/to/dir/swank-clojure
lein jar

将 clojure、clojure-contrib 和 swank-clojure 的 .jar 文件放置在 ~/.swank-clojure 或 ~/.clojure 中(这是 swank-clojure.el 搜索它们的默认位置)。


添加到 ~/.emacs 或 ~/Library/Preferences/Aquamacs Emacs/customization.el (更改路径以匹配您自己的设置)

(add-to-list 'load-path "/opt/local/share/emacs/site-lisp/slime/")
(add-to-list 'load-path "/opt/local/share/emacs/site-lisp/slime/contrib/")
;; 更改这些路径以匹配您的设置
(add-to-list 'load-path "path/to/dir/clojure-mode/")
(add-to-list 'load-path "path/to/dir/swank-clojure/")
(add-to-list 'load-path "path/to/dir/paredit/")
;; 自定义 swank-clojure 启动以反映可能的类路径更改 ;; M-x ielm `slime-lisp-implementations RET 或查看 `swank-clojure.el' 了解更多信息 (defadvice slime-read-interactive-args (before add-clojure) (require 'assoc) (aput 'slime-lisp-implementations 'clojure (list (swank-clojure-cmd) :init 'swank-clojure-init)))
(require 'slime) (require 'paredit) (require 'clojure-mode) (require 'swank-clojure)
(eval-after-load "slime" '(progn ;; "Extra" 功能(contrib) (slime-setup '(slime-repl slime-banner slime-highlight-edits slime-fuzzy)) (setq ;; 使用 UTF-8 编码 slime-net-coding-system 'utf-8-unix ;; 使用模糊匹配(M-Tab) slime-complete-symbol-function 'slime-fuzzy-complete-symbol) ;; 使用括号编辑模式 paredit (defun paredit-mode-enable () (paredit-mode 1)) (add-hook 'slime-mode-hook 'paredit-mode-enable) (add-hook 'slime-repl-mode-hook 'paredit-mode-enable)))
;; 默认情况下,输入和输出具有相同的颜色 ;; 自定义结果颜色以区分它们 ;; 如果您想进一步自定义,请查找 `slime-repl.el' 中的 `defface' (custom-set-faces '(slime-repl-result-face ((t (:foreground "LightGreen")))))
(eval-after-load "swank-clojure" '(progn ;; 使 REPL 更友好地与 Clojure 交互(ELPA 不包括此功能?) ;; 该函数在 swank-clojure.el 中定义但未使用 ?!? (add-hook 'slime-repl-mode-hook 'swank-clojure-slime-repl-modify-syntax t) ;; 添加 Incanter 的类路径(仅作为示例) ;; 设置类路径的首选方法是使用 swank-clojure-project (add-to-list 'swank-clojure-classpath "path/to/incanter/modules/incanter-app/target/*")))

感谢您详细的回复 - 我今晚会尝试一下。您有没有在MacPorts上安装SLIME的替代方法?我希望拥有最少的依赖关系。 - Michiel de Mare
您可以在http://common-lisp.net/project/slime/snapshots/slime-current.tgz下载它,或使用CVS克隆存储库:cvs -d:pserver:anonymous:anonymous@common-lisp.net:/project/slime/cvsroot co slime - ubolonton

5

下载并安装Aquamacs。

下载并安装ELPA (http://tromey.com/elpa/install.html)

执行M-x package-list-packages命令

将名为“clojure-mode”和“swank-clojure”的行标记为“I”,然后按“X”键。

完成。


在Aquamacs上安装ELPA没有说明,而Emacs 22的说明也不适用。 - Michiel de Mare
1
不工作是指什么?你收到了错误消息吗?哦,你可以通过将光标定位在最后一个括号右侧,然后按C-x-e来执行。 - mac
ELPA文档说是C-j,但实际上C-x-e(即C-x C-e)可以工作。第一次会出现http错误,但第二次会显示软件包列表。我还通过按下“i”而不是“I”来选择了slime和slime-repl软件包。按下“x”开始编译,这给了我一堆警告和一个错误(在slime-repl中),希望不是致命的。 - Michiel de Mare
1
你可以始终执行 C-h m 命令(注意这里是简单的 m,不是 C-m)来获取当前 major mode 以及任何正在运行的 minor modes 的帮助信息,其中会列出所有当前的按键绑定。这对于 Emacs 来说是正确的;但我想 Aquamacs 也可能有这个功能。 - Michał Marczyk

5

1
这篇博客是我上面回答的更详细版本。它还解释了OSX版本Emacs之间的差异。不错的发现! - mac
很棒的文章,可惜它使用了Maven。大约在2004年左右,我对Maven产生了一种强烈的过敏反应 - 显然现在已经好转了,但我仍然希望不用它。 - Michiel de Mare

1

似乎有一种相当简单的方法可以为Clojure设置Aquamacs 2.4和SLIME:

  1. 安装Clojure
  2. 从这里“http://aquamacs.org/”安装Aquamacs 2.4
  3. 从这里“http://aquamacs.org/download.shtml”安装Aquamacs SLIME包

这样做不会起作用,所以...

  1. 从这里“http://common-lisp.net/project/slime/#downloading”获取最新版本的SLIME - 您需要CVS快照tar文件
  2. 解压缩SLIME tar文件并将其复制到/Library/Application Support/Aquamacs Emacs/SLIME中

对我来说似乎工作正常...


0
今天我会前往https://github.com/tehcurtis/aquamacs-emacs-starter-kit/network
这是针对Ruby的,一开始可能无法正常工作,但无论如何,请使用git clone并根据自述文件将内容复制到Preferences.el中。通过编辑~/Library/Preferences/Aquamacs Emacs/并在modes.el中几乎注释掉所有内容(我只剩下(setq-default indent-tabs-mode nil))来修复损坏。
好消息是:您已经安装了elpa-package-manager,而且更加轻松。
现在:使用。
M-x package-list-packages

前往

clojure-mode   (press I)
slime          (press I)
slime-repl     (press I)

Press X to install

完成。

注意:clojure-jack-in不起作用,所以你必须

M-x slime-connect

然后按两次回车键并输入 y 开始。


0

我知道楼主想要使用Emacs进行Clojure开发。我自己也是一个Emacs粉丝,但我发现使用Enclojure(http://www.enclojure.org/home)是一个快速入门Clojure编程的好方法。


1
谢谢你的建议,我知道有很好的替代方案,但是这个帖子真的是关于Aquamacs技巧的 - 即使Carbon Emacs也不在话题范围内。 - Michiel de Mare

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