2012-10-26 19 views
3

我一直在嘗試一個星期來讓F#交互在Emacs中工作,但我一直未能。如何在Emacs中運行F#交互(* nix)

問題是,無論何時運行「fsi」或「fsharpi」(使用fsharp模式或在shell緩衝區中),緩衝區都將無法響應。我檢查系統監視器,看到使用100%CPU的單聲道進程,顯然我鍵入的任何內容都沒有得到評估。

我試過這個Emacs 24.1和23.2;在OS X,Linux Mint和Fedora上也是如此,所有這些都會導致同樣的問題。

我已經嘗試過不同版本的單聲道(OS X上2.10.9,3.0和2.8; Linux Mint上2.10.8.1,Fedora上不記得)。我也試過F#2.0和3.0;所有結果都一樣。

我也嘗試傳遞「--no-gui」和「--readline」時啓動解釋器沒有用。

這裏基本上會發生什麼

bash-3.2$ fsharpi 

Microsoft (R) F# 3.0 Interactive version (Mono build) 
Copyright (c) Microsoft Corporation. All Rights Reserved. 

For help type #help;; 

> - 1+2;; 
# after waiting for a minute, I kill the mono process 
Killed: 9 
bash-3.2$ bash: syntax error near unexpected token `;;' 

然而,解釋不工作時運行它的「ANSI-術語」緩衝:

bash-3.2$ fsharpi 

Microsoft (R) F# 3.0 Interactive version (Mono build) 
Copyright (c) Microsoft Corporation. All Rights Reserved. 

For help type #help;; 

> - 1+2;; 
val it : int = 3 

我想與fsharp模式,以便用它我可以很容易地將代碼發送給解釋器。

我還沒有看到任何人有這樣的在線問題,解決這將使開發更加方便。

有關如何使這項工作的任何想法?

編輯:如預期的那樣,以comint模式運行它也會「掛起」(comint是fsharp模式使用的)。

回答

3

您使用的是什麼版本的fsharp-mode?最後一次更新(v0.3)是在VS2010(F#2.0)發佈之後發佈的,release notes提到該版本中修復了無限循環的bug。

另一種可能性 - 最後更新fsharp-mode早Mono的F#的支持,所以我的猜測是,在智能感知幫助項目(在fsharp-mode代碼的/src文件夾)的一些代碼段是依靠Windows的特定行爲當你在Mono上運行時會突然崩潰。

我認爲你最好的選擇是讓你的問題在fsharp-opensource郵件列表上重新發布,因爲那裏有許多人在單聲道上運行F#並且可能知道如何解決這個問題。

編輯:從mailing list post的答案是通過--readline-標誌。尾隨-將關閉readline並修復問題。

+0

感謝您的答覆!我只是將它發佈到該郵件列表中。爲了澄清,我使用了fsharp-mode 0.3(最新版本),並且無限循環問題似乎有一些縮進;這發生在啓動fsi之後。 – dud5

相關問題