我试图将这些添加到我的.emacs中,但它们似乎没有效果
(local-set-key (kbd "C-x C-e") 'scheme-send-last-sexp )
(local-set-key (kbd "C-M-x") 'scheme-send-definition )
当我在.scm缓冲区中尝试使用C-x C-e时,我正在使用嘎嘎并且在一个缓冲区中运行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
有效。如何在不手动输入的情况下在Emacs(23.3.1)中获得此功能?
答案 0 :(得分:5)
local-set-key
local-set-key是
subr.el
中的交互式编译Lisp函数。(local-set-key KEY COMMAND)
...略...
绑定进入当前缓冲区的本地地图, 在大多数情况下,它与同一主要模式下的所有其他缓冲区共享。
因此,当您将local-set-key
添加到init文件时,将进行绑定
在该文件加载时使用的主要模式。
您需要将其添加到一个特定的主要模式。要做到这一点,你需要两件 信息:
mit-scm-mode
-map
附加到此处以获取密钥图。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 )))
到您的初始文件。
答案 1 :(得分:0)
基于上面的好答案,这就是我在Debian 10 buster上使用股票Emacs 26.1的原因。
(eval-after-load "scheme"
'(progn
(load "cmuscheme")
(define-key scheme-mode-map (kbd "C-x C-e") (lambda () (interactive) (scheme-send-last-sexp)))
(define-key scheme-mode-map (kbd "C-M-x") (lambda () (interactive) (scheme-send-definition)))))
我从this question算起,并进行了一些挖掘。