gpt4 book ai didi

emacs - 从信息缓冲区发送代码到方案解释器

转载 作者:行者123 更新时间:2023-12-02 02:21:29 24 4
gpt4 key购买 nike

我想在我的 Emacs 中研究 SICP。我已经安装了 MIT Scheme、Emacs 24 并下载了 sicp 信息(使用本指南 http://www.pchristensen.com/blog/articles/setting-up-and-using-emacs-infomode/)。现在我可以在专用缓冲​​区 (M-x run-scheme) 中运行方案解释器,但是当我尝试从 info 缓冲区 (C-x C-e) 发送其中一个定义表达式时出现以下错误:

Debugger entered--Lisp error: (void-function define)
(define (abs x) (cond ((> x 0) x) ((= x 0) 0) ((< x 0) (- x))))
eval((define (abs x) (cond ((> x 0) x) ((= x 0) 0) ((< x 0) (- x)))) nil)
eval-last-sexp-1(nil)
eval-last-sexp(nil)
call-interactively(eval-last-sexp nil nil)

看起来 Emacs 正试图用 Lisp 解释器执行这段代码。作为此问题的解决方法,我现在打开方案缓冲区(*.scm 文件),将代码从信息复制到它,然后他们使用 C-x C-e 执行它。但我想直接从信息缓冲区执行它。我该如何设置?

最佳答案

当您在信息模式下按 (C-x C-e) 时,Emacs 会调用 eval-last-sexp 因为这是 info 中绑定(bind)的组合键-模式

(C-x C-e)scheme-mode 中绑定(bind)了什么?你可以使用 (C-h c) 找到?您可以在 info 模式下将一些其他组合键绑定(bind)到该函数并使用该组合键。

请注意,信息模式是只读。如果 scheme-eval 函数将结果插入当前缓冲区,您将需要一个变通办法。

关于emacs - 从信息缓冲区发送代码到方案解释器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8006409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com