Emacs:符号作为变量的值是无效的

use*_*677 22 emacs

这是我的~/.emacs档案:

(setq-default c-basic-offset 4 c-default-style "linux")
(setq-default tab-width 4 indent-tabs-mode t)
(define-key c-mode-base-map (kbd "RET") 'newline-and-indent)
Run Code Online (Sandbox Code Playgroud)

我打开emacs时收到警告:

警告(初始化):加载时发生错误 c:/home/.emacs:

符号的值作为变量是无效的: c-mode-base-map

要确保正常操作,您应该调查并删除初始化文件中的错误原因.使用--debug-init选项启动Emacs 以查看完整的错误回溯.

我跑了--debug-init,这就是它返回的内容.我不知道我的意思:

调试器输入 - Lisp错误:(void-variable c-mode-base-map)

(define-key c-mode-base-map (kbd "RET") (quote newline-and-indent)) 

eval-buffer(#<buffer *load*> nil "c:/home/.emacs" nil t)

; Reading at buffer position 311
load-with-code-conversion("c:/home/.emacs" "c:/home/.emacs" t t)

load("~/.emacs" t t)
Run Code Online (Sandbox Code Playgroud)

Tom*_*mey 27

这意味着是,在你调用在该点define-key,c-mode-base-map尚未被任何定义.

通常的解决方法是找出定义的位置并要求该模块.在这种情况下:

(require 'cc-mode)
Run Code Online (Sandbox Code Playgroud)

但是,还有其他可能的修复,例如在模式挂钩中设置键绑定,或使用eval-after-load.你使用哪一个取决于你; 我倾向于采用KISS方法,因为我一般不关心启动时间; 但如果你这样做,你可能想要一些更懒的东西.

  • 不知道那一个。听起来像是来自扩展程序的内容,而不是随Emacs分发的内容。 (2认同)