这是我的~/.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)
我在打开emacs时收到警告:
警告(初始化):加载时发生错误
c:/home/.emacs
:符号作为变量的值为void:
c-mode-base-map
为确保正常操作,您应该调查并删除 初始化文件中的错误原因。用。启动Emacs
--debug-init
选项可查看完整的错误回溯。
我跑了--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)
答案 0 :(得分:23)
这意味着,在您调用define-key
时,c-mode-base-map
尚未被任何内容定义。
通常的解决方法是找出定义的位置并要求该模块。在这种情况下:
(require 'cc-mode)
然而,还有其他可能的修复,例如在模式挂钩中设置键绑定,或使用eval-after-load
。你使用哪一个取决于你;我倾向于采用KISS方法,因为我一般不关心启动时间;但是,如果你这样做,你可能想要更懒的东西。