我正在阅读Dybvig的《The Scheme Programming Language》一书。我使用Chez Scheme 9.4.1作为我的REPL。我正在使用Geiser在Emacs中运行上述REPL。Chez Scheme有一个transcript-on
函数,它将REPL的输入和输出记录到一个文本文件中,我觉得这个函数很有用。然而,通过在Emacs和Geiser中运行它,我也从Geiser获得了一个运行的"注释",它使文本文件输出不必要地冗长和麻烦,因为它包含了非常冗长的Geiser输出。例如
> (geiser:eval '#f '(geiser:autodoc '(1 1)))
((result "()") (output . ""))
> (geiser:eval '#f '(geiser:autodoc '(2 1)))
((result "()") (output . ""))
> (geiser:eval '#f '(geiser:autodoc '(3 1)))
((result "()") (output . ""))
> (geiser:eval '#f '(geiser:autodoc '(1)))
((result "()") (output . ""))
> (geiser:eval '#f '(geiser:autodoc '(1 1)))
((result "()") (output . ""))
我如何限制输出到文本文件,只是"读取"one_answers"打印"的输入和输出的REPL没有不必要的Geiser"注释",同时仍然得到在Emacs和Geiser中运行它的好处?
我不是Geiser或Scheme方面的专家,但我熟悉emacs中的lisp。我怀疑您将无法以这种方式过滤出信息——Geiser对信息的请求与您的请求在相同的REPL中输入,只是emacs界面没有显示它们。但是,Geiser可能只是使用emacs缓冲区来显示REPL,并且像任何其他文本缓冲区一样,您应该能够非常容易地将其内容复制到文件中。如果您很擅长配置emacs,那么自动化这个过程应该不难——emacs非常擅长这类事情。