如何在Emacs(*nix)中运行F#interactive
一周来,我一直在尝试让F#interactive在Emacs中工作,但一直没有成功 问题是每当我运行“fsi”或“fsharpi”(使用fsharp模式或在shell缓冲区中)时,缓冲区就会变得无响应。我检查了系统监视器,看到一个使用100%CPU的mono进程,很明显,我键入的任何内容都不会得到评估 我已经在Emacs24.1和23.2上试过了;同样在OSX、LinuxMint和Fedora上,都会导致同样的问题 我尝试过不同版本的mono(OSX上的2.10.9、3.0和2.8;LinuxMint上的2.10.8.1,Fedora上的不记得了)。我也试过F#2.0和3.0;结果都一样 我还尝试在启动解释器时输入“-no-gui”和“-readline”使其无效 下面是发生的基本情况如何在Emacs(*nix)中运行F#interactive,emacs,f#,mono,f#-interactive,Emacs,F#,Mono,F# Interactive,一周来,我一直在尝试让F#interactive在Emacs中工作,但一直没有成功 问题是每当我运行“fsi”或“fsharpi”(使用fsharp模式或在shell缓冲区中)时,缓冲区就会变得无响应。我检查了系统监视器,看到一个使用100%CPU的mono进程,很明显,我键入的任何内容都不会得到评估 我已经在Emacs24.1和23.2上试过了;同样在OSX、LinuxMint和Fedora上,都会导致同样的问题 我尝试过不同版本的mono(OSX上的2.10.9、3.0和2.8;LinuxM
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术语”缓冲区上运行解释器时,解释器确实可以工作:
我想将它与fsharp模式一起使用,这样我就可以轻松地向解释器发送代码
我还没有看到任何人在网上遇到过这样的问题,解决这个问题会使开发更加方便
有什么办法让它工作吗
编辑:正如预期的那样,在comint模式下运行它也会“挂起”(comint是fsharp模式使用的)。您使用的是什么版本的
fsharp模式
?上一次更新(v0.3)是在VS2010(F#2.0)发布之后,提到在该版本中修复了无限循环错误
另一种可能性是,fsharp mode
的上一次更新早于Mono对F#的支持,因此我猜测Intellisense helper项目(在fsharp mode
code的/src
文件夹中)中的某些代码依赖于Windows特定的行为,并且在Mono上运行时会中断
我认为你最好的办法是把你的问题重新发到邮件列表上,因为很多人都在Mono上运行F#on,可能知道如何解决这个问题
编辑:来自的答案是传入--readline-
标志。后面的-
关闭readline并修复问题。答案是使用选项“-readline-”运行F#解释器
它应该在Github存储库中解决(不需要此命令行参数)谢谢您的回复!我刚刚把它贴到了那个邮件列表上。为了澄清,我使用的是fsharp模式0.3(最新版本),无限循环问题似乎有一些缩进;这发生在启动fsi之后。
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