我正在尝试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挂起。当我按下C-g时,Emacs再次起作用,但是在那之后情况变得越来越糟-在REPL中,每个Geiser函数都挂起了-例如,如果我按下TAB或C-M-i以完成符号。我只能输入文字,然后按Enter。唯一的解决方案是使用C-c C-q杀死Scheme解释器,然后重新启动它。为什么?我在做错什么吗?
在Guile v2.2 +最新的Geiser和Guile v2.0 + Geiser v0.8.1上进行了测试。
答案 0 :(得分:3)
解决方案是使用--listen
参数从命令行运行单独的Guile进程,即:
guile --listen=1661 web-test.scm
并使用 M-x geiser-connect
或 M-x connect-to-guile
从Emacs与之连接,如“连接外部方案”中所述此处:http://geiser.nongnu.org/geiser_3.html#Starting-the-REPL。
在Geiser维护人员的帮助下解决。