首页 文章

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

提问于
浏览
12

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

问题

  • 可以在Aquamacs上安装Clojure吗?或者,你能猜出为什么Aquamacs上的Clojure不起作用吗?

  • Emacs和Aquamacs不能共享相同的ELPA这是正常的吗?

  • 是否可以使用ELPA在Emacs / Aquamacs上安装Conjure?

  • 我被告知可以使用'lein swank'作为服务器运行,你知道怎么做吗?

我试过的序列(一半成功)

我尝试了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))

步骤2)使用ELPA安装

  • M-x package-list-packages选择包

  • 安装

  • clojure-mode,clojure-test-mode

  • 史莱姆,史莱姆 - 代表

  • swank-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 回答

  • 1

    由于Clojure的作者使用它,因此Aquamacs绝对适用于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

  • 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并且已加载项目的依赖项 .

  • 5

    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 for REPL .

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

相关问题