簡體   English   中英

使用leiningen為clojure設置emacs / slime / swank

[英]Setting up emacs/slime/swank for clojure with leiningen

短版本:使用lein swank啟動swank服務器時運行Mx slime-connect或Mx clojure-jack-in時出錯。

我在Ubuntu 10.10上使用emacs 24.0.50.1。 我在ELPA的emacs中安裝了以下軟件包:clojure-mode,paredit,slime,slime-repl

我從github安裝了leiningen並將其添加到類路徑中,然后運行lein plugin install swank-clojure 1.3.3 之后我創建了一個新的目錄〜/ tmp /,cd進入它並運行: lein new test-project ,似乎設置一切正常。 然后我在emacs中打開了/tmp/new-project/project.clj並將其更改為:

(defproject test-project "1.0.0-SNAPSHOT"
:description "Test Project"
:dependencies [[org.clojure/clojure "1.2.1"]
               [org.clojure/clojure-contrib "1.2.0"]]
:dev-dependencies [[swank-clojure "1.3.3"]])

之后我回到/ tmp / new-project文件夾並運行lein deps然后lein swank下載依賴項並啟動lein swank服務器,它提供輸出:

Connection opened on local port 4005.

回到emacs是我遇到連接到swank服務器的問題。 我試過打開core.clj文件並運行Mx slime-connect ,它給出了錯誤:

Symbol's function definition is void: define-slime-contrib

這讓我覺得它或者看不到swank服務器正在運行,或者有一些配置需要為它查看服務器。 我也嘗試過(打開同一個文件並打開project.clj) Mx clojure-jack-in我假設嘗試在項目文件夾中啟動clojure REPL但是它給出了以下內容:

Debugger entered--Lisp error: (error "Could not start swank server: sh: lein: not found
")
signal(error ("Could not start swank server: sh: lein: not found\n"))
error("Could not start swank server: %s" "sh: lein: not found\n")
clojure-jack-in-sentinel(#<process swank> "exited abnormally with code 127\n")

我正在按照http://matthias-schneider.org/docs/clojure-setup/關於emacs包和lein設置的指示,然后開始按照http://riddell.us/ClojureSwankLeiningenWithEmacsOnLinux.html上的測試配置說明進行操作有問題讓Mx slime-connect打開一個REPL。

更新

刪除〜/ tmp / test-project,卸載emacs和/.emacs.d/elpa/包,重新安裝emacs,重新安裝clojure-mode和paredit包,將〜/ .lein復制到/ bin以確保沒有路徑問題(wasn如果/.lein或/.lein/bin需要在路徑中,請確保。 Ran /.lein/bin/swank-clojure然后打開emacs,打開了project.clj,並嘗試了Mx slime-connect ,現在要求我輸入主機(本地默認),端口(默認為4005),連接到swank ,給出一個關於swank和slime版本不同(y或n)y的消息,然后minibuffers error in process filter: Lisp connection closed unexpectedly給出error in process filter: Lisp connection closed unexpectedly 在我運行/.lein/bin/swank-clojure的終端中彈出以下java錯誤:

exception in read loop
java.lang.NumberFormatException: For input string: "    a6"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:470)
at swank.core.protocol$read_swank_message.invoke(protocol.clj:41)
at swank.core.connection$read_from_connection.invoke(connection.clj:59)
at swank.core$read_loop.invoke(core.clj:337)
at swank.swank$connection_serve$fn__1486$fn__1487.invoke(swank.clj:32)
at clojure.lang.AFn.applyToHelper(AFn.java:159)
at clojure.lang.AFn.applyTo(AFn.java:151)
at clojure.core$apply.invoke(core.clj:540)
at swank.swank$connection_serve$fn__1486.doInvoke(swank.clj:29)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.AFn.run(AFn.java:24)
at java.lang.Thread.run(Thread.java:636)

更新:解決了,我需要卸載emacs並刪除所有/.emacs.d/,而不僅僅是/ elpa /中的包。 重新安裝后,我只有clojure模式包,而不是史萊姆或slime-repl。 現在可以連接Mx clojure-jack-in並准備好做一些工作!

我寫了一個初學者指南,用於設置Emacs + nREPL客戶端,其中包含自動完成和文檔彈出,因為大多數舊指令都不合適。 在這里 可能對新手有所幫助。

你不需要安裝slime和slime-repl:它們嵌入到lein的插件中(參見jar:swank-clojure-1.4.0-SNAPSHOT.jar \\ swank \\ payload)。 你必須只安裝clojure模式。

此外,在“重新安裝”時,請記住在$ HOME目錄中刪除隱藏文件夾.emacs.d,否則它將保留以前下載的Emacs插件。

最后更喜歡clojure-jack-in,而不是slime-connect - 只是有slime-connect意味着你仍然在Emacs中有一個SLIME,所以你沒有刪除它。

無需安裝lein swank插件。 您可以在project.clj文件中添加依賴項,只需添加lein swankMx slime-connect

試試swank-clojure“1.2.1”,它對我有用。

嘗試執行以下操作,這適用於Ubuntu上的Emacs 24:

  1. 安裝Leiningen。 確保你安裝lein的目錄在$PATH
  2. 安裝swank-clojure插件:

    lein plugin install swank-clojure 1.3.3

  3. 使用lein new創建一個新項目。 不要將swank-clojure添加到:dev-dependencies (你真的只需要一個或另一個,插件或條目:dev-dependencies 。)

  4. 啟動Emacs,確保它可以“看到” $PATH上的lein ,例如:

    PATH=$PATH:/path-to/dir-where/lein-is emacs

    (使用此命令進行試用。為了永久使用,您應該更新.profile文件中的$PATH或在已經位於$PATH上的位置安裝lein 。在標准的Ubuntu安裝中, ~/bin應該在$PATH 。)

  5. 從項目中打開一個文件,例如project.clj ,然后運行Mx clojure-jack-in 這應該啟動Swank服務器並將SLIME REPL連接到它。

當我從舊版本克隆其他人的clojure項目時,這發生在我身上。 他們的project.clj有:

:dev-dependencies [[lein-clojars "0.5.0"]
                   [swank-clojure "1.2.1"]]

這是不正確的,我想,如果你使用Mx clojure-jack-in 刪除這些線路,運行lein depslein deps in為我工作。

暫無
暫無

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

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