如何修复“源文件比字节编译文件更新”错误?
Posted
技术标签:
【中文标题】如何修复“源文件比字节编译文件更新”错误?【英文标题】:How to fix "Source file newer than byte-compiled file" error? 【发布时间】:2014-03-21 07:06:59 【问题描述】:我收到了错误
源文件 `~/.emacs.d/elpa/cmake-mode-20110824/cmake-mode.el' 比字节编译文件更新
当我尝试在 cmake 模式下打开 CMakeLists.txt 文件时。
我的 .emacs 包含(部分)以下内容:
(setq load-path (cons
(expand-file-name "~/.emacs.d/elpa/cmake-mode-20110824")
load-path))
(require 'cmake-mode)
(setq auto-mode-alist
(append '(("CMakeLists\\.txt\\'" . cmake-mode)
("\\.cmake\\'" . cmake-mode))
auto-mode-alist))
回溯:
Debugger entered--Lisp error: (wrong-type-argument char-table-p nil)
char-table-parent(nil)
cmake-mode()
set-auto-mode-0(cmake-mode nil)
set-auto-mode()
normal-mode(t)
after-find-file(nil t)
find-file-noselect-1(#<buffer CMakeLists.txt> "~/CMakeLists.txt" nil nil "~/CMakeLists.txt" (19923691 2049))
find-file-noselect("~/CMakeLists.txt" nil nil t)
find-file("~/CMakeLists.txt" t)
call-interactively(find-file nil nil)
我对为什么会发生此错误感到困惑。免责声明:我是一个 emacs 和 elisp 菜鸟。
【问题讨论】:
您的免责声明是多余的,因为“源文件更新...”是警告而不是错误:) 这对我来说是个错误,该死! 【参考方案1】:问题可能出在您的cmake-mode
中,该cmake-mode
已经过时了。
以下是解决方法:
-
从上面删除所有设置
确保您拥有
emacs24
在你的~/.emacs
:
(package-initialize)
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/"))
M-x package-list-packages
。使用 C-s 查找 cmake-mode
。
使用 i 标记安装并使用 x 进行安装。
【讨论】:
如果需要add-to-list
,这是cmake-mode.el中的一个错误。
确实,这个问题最近已经修复了。
另外,您可能希望将load-prefer-newer
设置为非零值以避免将来加载过时的字节码文件。以上是关于如何修复“源文件比字节编译文件更新”错误?的主要内容,如果未能解决你的问题,请参考以下文章