簡體   English   中英

Emacs(Cocoa Emacs)與Aquamacs在Mac OS X上運行Clojure

[英]Emacs (Cocoa Emacs) vs Aquamacs for running Clojure on Mac OS X

到目前為止我使用了Aquamacs ,我需要使用SLIME安裝和運行Clojure 我用谷歌搜索了一些方法在Aquamacs的SLIME上使用Clojure,但沒有成功。

問題

  1. 可以在Aquamacs上安裝Clojure嗎? 或者,你能猜出為什么Aquamacs上的Clojure不起作用嗎?
  2. Emacs和Aquamacs不能共享同一個ELPA是正常的嗎?
  3. 是否可以使用ELPA在Emacs / Aquamacs上安裝Conjure?
  4. 我被告知可以使用'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安裝

  • Mx package-list-packages用於選擇包
  • 安裝
    • clojure-mode,clojure-test-mode
    • 史萊姆,史萊姆
    • 自吹,Clojure的
  • Mx粘液安裝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) 為Aquamacs安裝ESK

  • 將文件復制到〜/ 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)*按照以前的步驟安裝所有(相同)軟件包,但“Mx slime”給我以下錯誤消息。 “符號的函數定義是無效的:define-slime-contrib”

ELPA

我試圖將Emacs和Aquamacs的軟件包結合起來,但它們並沒有結合起來。 我以為我可以使用ELPA本身,而不是ESK來共享它。

結果並不好,因為ELPA無法下載swank-conjure包。

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

請參考這個

由於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中運行Mx slime-connect ,只需按下默認輸入即可。

如果你打算走這條路,這里是直接連接到leiningen的鏈接,所以你可以跳過labrepl存儲庫: http ://github.com/technomancy/leiningen

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)))

我可以運行'Mx clojure-mode',以及Cc Cz for REPL。

正如在Emacs上同時Running Clojure和其他Lisp中提問和回答的那樣,我可以在Aquamacs上同時使用Clojure / Lisp。

我發現是最新版本的最簡單的設置。 這是一個快速摘要,我假設你已經安裝了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並且已加載項目的依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM