1

我正在试验 Guile 和简单的 Web 开发。我对 Common Lisp 和 Slime 有一些经验。而且我是交互式开发的忠实粉丝。Geiser 是很棒的 IDE,但是当我从 REPL 运行简单的 Web 服务器时,我失去了交互性:

(use-modules (web server))

(define (hello-world-handler request request-body)
  (values '((content-type . (text/plain)))
          "hello"))

(run-server hello-world-handler)

之后,如果我尝试对定义进行评估,则没有任何反应,并且 Emacs 挂起。当我再次点击 Cg Emacs 时,它会变得更糟——在 REPL 中,每个 Geiser 函数都会挂起——例如,如果我点击 TAB 或 CMi 来完成符号。我只能输入文本并按 ENTER。唯一的解决方案是用 Cc Cq 杀死 Scheme 解释器并重新启动它。为什么?难道我做错了什么?

在 Guile v2.2 + 最新的 Geiser 和 Guile v2.0 + Geiser v0.8.1 上测试。

4

1 回答 1

3

解决方案是使用参数从命令行运行一个单独的 Guile 进程--listen,即:

guile --listen=1661 web-test.scm

M-x geiser-connect并使用或从 Emacs 连接它M-x connect-to-guile,如此处“连接到外部方案”中所述:http : //geiser.nongnu.org/geiser_3.html#Starting-the-REPL

在 Geiser 维护者的帮助下解决。

于 2018-11-11T20:52:22.570 回答