2011-12-10 30 views
4

我試圖讓Slime與CDT和emacs 24一起工作,但無濟於事,並且會很感激建議。獲取Emacs 24運行SLIME和Clojure調試工具包(CDT)的問題

1)我沒有得到clojure-jack-in運行,但只有當我加載swank-clojure 1.3.3作爲lein插件時,如github swank-clojure頁面https://github.com/technomancy/swank-clojure中所述。 2)我嘗試着按照George Jahad在http://georgejahad.com/clojure/swank-cdt.html(使用Clojure 1.2.1)中所述加載swank-clojure 1.4.0-SNAPSHOT,但我無法運行clojure-jack-in。如下面3)所述,我得到了同樣的錯誤。

3)最近,我嘗試在technomancy.us網站上覆制概念驗證短片的結果,在「根本性簡化發生後」http://technomancy.us/149。在這種方法中,我將swank-clojure 1.4.0-SNAPSHOT作爲lein插件加載並確認它已加載到~/.lein/plugins/swank-clojure-1.4.0-SNAPSHOT.jar。當我創建了一個新的雷音項目,做lein deps就可以了,在Emacs開盤項目的core.clj文件,然後執行M-x clojure-jack-in,而不是讓一個REPL,我得到了在emacs的小緩衝區以下錯誤:

error in process filter: Search failed: "(run-hooks 'slime-load-hook) ; 
on port" 

請注意,錯誤字符串的末尾確實包含端口號而不是。除非這是一個更長的錯誤字符串的任意截斷,否則缺少端口號會讓我感到不安。

*swank*緩衝器長,開頭:

;;; Bootstrapping bundled version of SLIME; please wait... 

,結束時用:

(provide 'slime-repl) 
;;; slime-repl.el ends here 

(run-hooks 'slime-load-hook) 
;;; proceed to jack in 

這與該錯誤消息是一致的。

我已經花了大約六個小時在這,包括lot的網絡搜索,並沒有運氣。感謝您的任何幫助,您可以提供。


增編:我一直在繼續嘗試,現在*swank*緩衝結束像以前(死於在同一個地方),但在最後的附加線。僅供參考,那就是:

(provide 'slime-repl) 
;;; slime-repl.el ends here 

(run-hooks 'slime-load-hook) 
[WARNING] Overriding profile: 'null' (source: pom) with new instance from source: pom 
[WARNING] Overriding profile: 'null' (source: pom) with new instance from source: pom 
[WARNING] Overriding profile: 'null' (source: pom) with new instance from source: pom 
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository clojars at http://clojars.org/repo/ 
Unable to locate resource in repository 
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository clojars (http://clojars.org/repo/) 
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository stuartsierra-releases at http://stuartsierra.com/maven2 
Unable to locate resource in repository 
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository stuartsierra-releases (http://stuartsierra.com/maven2) 
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository clojure at http://build.clojure.org/releases 
Unable to locate resource in repository 
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository clojure (http://build.clojure.org/releases) 
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository clojure-snapshots at http://build.clojure.org/snapshots 
Unable to locate resource in repository 
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository clojure-snapshots (http://build.clojure.org/snapshots) 
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository central at http://repo1.maven.org/maven2 
Unable to locate resource in repository 
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository central (http://repo1.maven.org/maven2) 
Copying 9 files to /Users/gw/tech/clojurestuff/cljprojects/infwb/lib 
Copying 1 file to /Users/gw/tech/clojurestuff/cljprojects/infwb/lib/dev 
Listening for transport dt_socket at address: 61012 
;;; proceed to jack in 

(附錄結束)


附錄2(二〇一一年十二月一十二日)感謝所有誰提供幫助,特別是@ivant,對誰我授予「複選標記」。我將考慮關閉這個情況,因爲我已經放棄了嘗試修復它。由於我使用了預先包裝的初始化軟件包,這很複雜,我確信它是相當不錯的,但我不明白它在做什麼,也不知道它是否導致了這個問題。

我重新啓動了一個「乾淨的」Emacs 24並恢復爲swank-clojure 1.3.3,而clojure-jack-in現在工作得很好。稍後我會嘗試CDT,一旦登錄到swank-clojure 1.4.0-SNAPSHOT的錯誤得到解決。

我從人們的評論中學到了一些東西 - 再次感謝。

+0

您可以嘗試使用[emacs的啓動套件(https://github.com/technomancy/emacs-starter-kit)來初始化的emacs。 – ivant

回答

0

升級到斯旺克-的Clojure 1.4.0(昨天發佈),一切都將只是工作開箱。 lein plugin install swank-clojure 1.4.0

CDT的安裝和集成,現在完全自動化。請務必刪除任何你躺着的swank-clojure,slime.el和slime-repl.el的副本。爲了安全起見,也要確保你已經安裝了最新的clojure-mode.el。

0

我不知道答案,但我已經打了同樣的問題,但我可以提供周圍工作。

只需在命令行中運行lein swank,並在Emacs中使用slime-connect,那麼您至少可以再次獲得工作環境。

這也已提交的自吹,Clojure的錯誤列表: https://github.com/technomancy/swank-clojure/issues/87

+0

感謝您的信息。在我的情況下,當我運行'lein swank'時,打開我的項目的core.clj,並嘗試M-x slime-connect,minibuffer立即以'(不匹配)'作爲響應。有什麼想法在我的emacs中缺少'slime-connect'不存在? –

+0

你的.emacs或init.el是什麼樣的? 1.4快照是你路徑中唯一的jar嗎? – georgek

2

注:我沒有emacs 24,也沒有安裝CDT。

綜觀clojure-jack-in代碼,它看起來像它選擇一個端口事先並使用lein jack-in <port>開始Clojure的(除非你重新定義clojure-swank-command的地方)。

它然後解析尋找特定的字符串來觸發一些動作輸出(這是在*swank*緩衝區可見)。它們是:

;;; Bootstrapping bundled version of SLIME 
... 
;;; Done bootstrapping. 

或作爲後備:

;;; Bootstrapping bundled version of SLIME 
... 
(run-hooks 'slime-load-hook) ; on port 

並執行這些線之間的emacs的命令。字符串「繼續插入」會觸發實際的連接。

因此檢查來源,檢查一些相關變量(如clojure-swank-command)的值,並檢查緩衝區中的線索是什麼。

編輯

您可能希望在項目運行的lein deps,brfore試圖M-x clojure-jack-in,像

Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository clojars at http://clojars.org/repo/ 
... 

可以在*swank*緩衝結束了,可與啓動過程干涉,否則輸出。

但這個特定的依賴看起來很可疑我。你可以發佈你的project.clj文件嗎?

+0

感謝您的額外信息!我在'* swank *'緩衝區尋找'clojure-jack-in',在那裏有一個Clojure代碼的_lot_,但它不在那裏。我也無法在leiningen源代碼中找到它。你能告訴我在哪裏可以找到這個源代碼嗎?謝謝!--FYI,我在原始問題的最後添加了一些新的信息。 –

+0

'clojure-jack-in'是一個elisp函數,在'clojure-mode.el'中定義。 – ivant