当我启动 Guile Web 服务器时,Geiser/Emacs 挂起
Geiser / Emacs hangs when I start Guile web server
我正在试验 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 上测试。
解决方案是使用 --listen
参数从命令行 运行 一个单独的 Guile 进程,即:
guile --listen=1661 web-test.scm
并使用 M-x geiser-connect
或 M-x connect-to-guile
从 Emacs 连接它,如 "connecting to an external scheme" 这里:http://geiser.nongnu.org/geiser_3.html#Starting-the-REPL.
在 Geiser 维护者的帮助下解决了。
我正在试验 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 上测试。
解决方案是使用 --listen
参数从命令行 运行 一个单独的 Guile 进程,即:
guile --listen=1661 web-test.scm
并使用 M-x geiser-connect
或 M-x connect-to-guile
从 Emacs 连接它,如 "connecting to an external scheme" 这里:http://geiser.nongnu.org/geiser_3.html#Starting-the-REPL.
在 Geiser 维护者的帮助下解决了。