我无法关闭最后一个括号并使用Slime中的lisp-mode将我的函数发送到REPL

时间:2009-05-20 04:42:11

标签: emacs common-lisp slime

这是一个非常简单的问题。我安装了Emacs 22.2.1(来自Ubuntu(9.04)repo,我从主页上的repo下载了Slime-current。

我按照粘液提供的说明进行操作。我可以开始使用粘液并按预期使用它。

但是,当我进入lisp-mode(M-x lisp-mode)时,我无法再与REPL交互。我输入的任何内容都没有,当我按下回车键时,光标只会移动到下一行。

有没有人对此有解决方法?

修改

关于我如何使用Emacs的问题。是的,我启动Emacs,然后用M-x粘液输入粘液。我读到我可以通过下一步使用M-x lisp-mode进入lisp模式来获得正确的语法高亮。

它确实提供了语法高亮,但如下所述,它用于编辑文本文件,而不是与REPL交互。

我最近还读到,将以下内容放在我的.emacs文件中将启用语法突出显示(它不起作用)。

; Syntax Highlighting
(global-font-lock-mode 1)

; Enable slime
(add-to-list 'load-path "/home/doug/Software/slime/")  ; your SLIME directory
(setq inferior-lisp-program "/home/doug/Software/ccl/ccl") ; your Lisp system
(require 'slime)
(slime-setup)

; Enable psvn
(require 'psvn)

所以我猜我的问题需要修改。由于lisp-mode并不是简单地为slime启用lisp功能,那么我如何在slime中启用语法高亮?

编辑2:

答案在评论中提供。

启动slime然后打开/创建要使用的新文件。这是打算使用lisp-mode的缓冲区。

该函数被写入,突出显示并发送到REPL。输出显示在底部。

这两个人应该合作,而不是整合。

3 个答案:

答案 0 :(得分:2)

移出注释:通常,您不会直接在REPL缓冲区中编写大函数,而是将它们写入另一个缓冲区并通过C-c C-c将它们发送到REPL。 slime-repl-mode有自己的突出显示,但有不同的用途:它以不同的颜色显示输入,输出和系统消息(在我的绿色黑色设置中,它显示绿色输入,红色系统消息,并以浅蓝色输出。

答案 1 :(得分:2)

听起来你在具有REPL的缓冲区中输入lisp-mode,是吗?如果是这样的话,那可能就是你做错了。 REPL缓冲区可能有自己的模式。

查看文档,与Slime交互的方式(与大多数Emacs的劣质流程一样)是使用评估当前sexp或区域或缓冲区的绑定。见page of the documentation。该链接中的任何绑定都不是简单的RET键 - 这使我相信您更改了REPL缓冲区的模式。

当然,更多信息会有所帮助。

答案 2 :(得分:1)

当你做M-x史莱姆时,Slime启动并显示REPL(带有REPL的缓冲区将处于slime-repl-mode主模式。这个slime-repl-mode驱动REPL。

lisp-mode,根据其描述,是“除了GNU Emacs Lisp之外编辑Lisp的Lisp代码的主要模式”。 Lisp-mode用于编辑文件,而不是用于REPL。 这是预期的行为。

相反,为什么要将REPL切换到lisp模式?