Emacs(Cocoa Emacs)与Aquamacs在Mac OS X上运行Clojure

时间:2010-07-16 03:23:16

标签: emacs clojure slime aquamacs elpa

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

问题

  1. 是否可以在Aquamacs上安装Clojure?或者,你能猜出为什么Aquamacs上的Clojure不起作用吗?
  2. Emacs和Aquamacs无法共享同一个ELPA
  3. 是否正常?
  4. 是否可以使用ELPA在Emacs / Aquamacs上安装Conjure?
  5. 我被告知可以使用'lein swank'作为服务器运行,你知道怎么做吗?
  6. 我试过的序列(一半成功)

    我尝试使用Mac OS X Emacs,然后按照我可以使其工作的步骤。我的意思是,我可以用SLIME运行Clojure。

    适用于Mac OS X的Emacs

    步骤1)安装ESK

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

    Step2)使用ELPA安装

    • M-x package-list-packages选择包
    • 安装
      • clojure-mode,clojure-test-mode
      • slime,slime-repl
      • 斯旺克-Clojure的
    • M-x粘液安装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”给出了以下错误消息。 “符号的函数定义是无效的:define-slime-contrib”

    ELPA

    我尝试将Emacs和Aquamacs的软件包结合起来,但它们并没有结合起来。我以为我可以使用ELPA本身,而不是来自ESK来共享它。

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

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

    请参阅this

3 个答案:

答案 0 :(得分:5)

Aquamacs绝对适用于Clojure,因为Clojure的作者使用它。但是,我使用Emacs,在Emacs部分执行上述步骤后,我建议查看labrepl,

http://github.com/relevance/labrepl

如果您没有leiningen,则获取并安装它的链接位于labrepl自述文件的说明中。在第一次学习如何为Clojure编程设置环境时,我发现它非常有用。您可以拆开labrepl中的project.clj文件,并将其工作原理非常简单地拼凑起来。更不用说labrepl附带的内置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,只需按默认值输入即可。

如果你要走这条路,这里是直接链接到leiningen的链接,所以你可以跳过labrepl存储库:http://github.com/technomancy/leiningen

答案 1 :(得分: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。

正如在 Running Clojure and other Lisp at the same time on Emacs 中提出并回答的那样,我可以在Aquamacs上同时使用Clojure / Lisp。

答案 2 :(得分:2)

我发现this是所有内容最新版本最简单的设置。这是一个快速摘要,我假设你已经安装了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

您现在处于一个slime缓冲区,其中包含clojure和项目的依赖项。