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

Posted

技术标签:

【中文标题】Emacs:符号作为变量的值是无效的【英文标题】:Emacs: Symbol's value as variable is void 【发布时间】:2014-10-20 04:11:36 【问题描述】:

这是我的~/.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:

Symbol 作为变量的值是 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)

【问题讨论】:

【参考方案1】:

这意味着,在您调用 define-key 时,c-mode-base-map 还没有被任何东西定义。

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

(require 'cc-mode)

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

【讨论】:

谢谢。对于achead:include-directories,我也得到了同样的结果。有什么想法吗? 没有关于那个的线索。这听起来像是来自扩展的东西,而不是随 Emacs 分发的东西。

以上是关于Emacs:符号作为变量的值是无效的的主要内容,如果未能解决你的问题,请参考以下文章

markdown 修复大多数emacs / spacemacs“符号的函数定义是无效的:some-package-function”

.emacs 中区分大小写的 setq 无效

Js学习基本语法

变量“$file”的值无效 ;上传值无效

选择'('abc','def','ghi')'作为双重无效的值[重复]

错误:模块参数的值无效给定的值不适合子模块变量