Emacs Scheme评估-last-sexp

mel*_*sul 1 emacs mit-scheme

我试图将这些添加到我的.emacs中,但它们似乎没有效果

(local-set-key (kbd "C-x C-e") 'scheme-send-last-sexp )
(local-set-key (kbd "C-M-x") 'scheme-send-definition )
Run Code Online (Sandbox Code Playgroud)

当我在.scm缓冲区中尝试Cx Ce时,我正在使用嘎嘎并且在一个缓冲区中运行MIT-Scheme.我没有评估最后的s表达式,而是"你必须用run-ilisp开始一个劣质的LISP".但是如果我手动添加快捷方式:

M-x local-set-key RET C-x C-e scheme-send-last-sexp RET
M-x local-set-key RET C-M-x scheme-send-definition RET
Run Code Online (Sandbox Code Playgroud)

有用.如何在不手动输入的情况下在Emacs(23.3.1)中获得此功能?

eve*_*_jr 5

C-h f local-set-key

local-set-key是一个交互式编译的Lisp函数subr.el.

(local-set-key KEY COMMAND)

...略...

绑定进入当前缓冲区的本地映射,在大多数情况下,该映射与相同主模式下的所有其他缓冲区共享.

因此,当您添加local-set-key到init文件时,绑定是在该文件加载时使用的任何主要模式下进行的.

您需要将其添加到一个特定的主模式.为此,您需要两条信息:

  1. 主模式的名称.
    • 使用C-h vmajor-mode已加载主模式的缓冲区.
    • 我们假设 mit-scm-mode
    • 附加-map到此以获取键映射.
  2. 定义主模式的文件的名称.
    • 使用C-h fmit-scm-mode.
    • 我们假设mit-scm-mode.el.
    • 使用没有扩展名的文件名.

有了这些,你会添加:

(eval-after-load "mit-scm-mode"
  '(progn
     (define-key mit-scm-mode-map (kbd "C-x C-e") 'scheme-send-last-sexp )
     (define-key mit-scm-mode-map (kbd "C-M-x") 'scheme-send-definition )))
Run Code Online (Sandbox Code Playgroud)

到你的init文件.