从Emacs运行Scheme

12

我是LISP的新手。

我正在尝试从emacs(运行在Windows上的23版本)中调用scheme解释器。我通过告诉emacs M-x load-library,然后在迷你缓冲区的提示符中输入xscheme来加载xscheme库。库已经加载完成,然后我发出了M-x run-scheme命令。(我知道所有这些加载可以在启动时从.emacs文件中完成,但我现在不关心这个。)

到目前为止一切都很好 - 已经创建了*scheme*缓冲区,现在我希望我能与scheme解释器交互。

然而,当我尝试在那个*scheme*缓冲区中评估某些内容(例如(define shoe-size 14))时,我会在迷你缓冲区中收到Output file descriptor of scheme is closed消息。

有人知道如何在emacs中修复这个问题吗?

(另外,如何将主模式设置为REPL在*scheme*缓冲区中?)

谢谢。

4个回答

15

尝试将scheme-program-name变量设置为Scheme解释器的路径。Scheme缓冲区的major-mode可能只是comint,除非您切换到更强大的工具(如Geiser),否则无法做太多事情-我建议您这样做。


谢谢你关于Geizer的提示 - 我刚刚安装了它,REPL模式似乎对我有效。我会进行一些实验,并稍后回来查看答案。 - dave
你好,我安装了Geizer包并能够与guile交互('M-x run-guile')。然而,如果我加载一个扩展名为.scm的文件(它会在Scheme Guile主模式下打开缓冲区),并尝试编译它('C-c C-k'),我会收到消息“此缓冲区没有Geiser REPL”。(作为新手,我可能陷入了一些困境:一方面需要设置emacs环境才能学习scheme、clisp和emacslisp,另一方面需要至少了解一些emacslisp才能设置该环境。)提前感谢任何能够对此发表评论的人。d. - dave
1
@dave,我遇到了这个问题,通过使用guile 2.0.x来修复,geiser不支持guile 1.x。 - Chris Zheng

9
将以下这行代码添加到你的.emacs 文件中:
(setq scheme-program-name "gsi")

(将"gsi"替换为您的Scheme解释器的名称。)

然后,您可以使用M-x run-scheme启动解释器。您可以使用C-x C-e来评估点之前的S表达式,或使用C-M-x来评估当前S表达式。您还可以使用C-c C-l加载文件。


5
我首先要说的是我对编程、scheme和SICP都非常新手,但是我正在努力完成课程并观看在线讲座。
我在Ubuntu 12.10上运行emacs,我真的希望能够在emacs中使用MIT scheme而不是依赖于Edwin。
以上提示对我没有用,但以下是确实有效的逐步说明:
  1. 从Ubuntu软件中心安装emacs 24(搜索“emacs”并安装!)。
  2. 打开终端(ALT + CTRL + t)。
  3. 转到您的主目录(cd〜)。
  4. 使用gedit打开隐藏文件.emacs(gedit .emacs)。
  5. 在文件的第一行输入冒号后面的内容:(require 'xscheme)
  6. 保存更改到.emacs中。
  7. 就这样!!!

现在您可以在emacs中打开.scm文件,并使用像C-x C-e这样的命令。

*指南来源于http://alexott.net/en/writings/emacs-devenv/EmacsScheme.html#sec14


0

我的猜测是这只是一个已知问题 我仍然不知道如何解决它(超出了我的当前技能范围),但我有一个宏可能会有所帮助:在编写s-exp之后,您可以执行Cc-Cz(它调用geiser REPL),然后执行C-spc,C-M-b,M-w,C-x-o,C-yRET

还有一种变化(相同的,放在编写s-exp之后):C-spc,C-M-b,M-w,C-c Cz,C-yRET


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接