无效功能错误:缩写

时间:2014-08-22 01:07:33

标签: emacs emacs24

我以前在windows中使用Emacs,最近我想尝试Ubuntu 14.04。我使用相同的设置,相同的init.el,相同的包。但是在Ubuntu下启动Emacs时遇到错误。 我不是一个elisp程序员,我希望我能在这里得到一些帮助。我正在使用Prelude for Emacs 24,但即使我使用-Q运行emacs,仍然存在相同的错误....

错误如下:

Debugger entered--Lisp error: (invalid-function "abbrev")
  "abbrev"("convenience" "matching")
  byte-code("\300\301\302\303\304\305\306\307\310\311\312\"&\207" [define-package "company" "20140731.944" "Modular text completion framework" ((emacs "24.1") (cl-lib "0.5")) :url "http://company-mode.github.io/" :keywords "abbrev" "convenience" "matching"] 11)
  load("/home/zhijia/.emacs.d/elpa/company-20140731.944/company-pkg" nil t)

  package-load-descriptor("/home/zhijia/.emacs.d/elpa" "company-20140731.944")
  package-maybe-load-descriptor("company" "20140731.944" "/home/zhijia/.emacs.d/elpa")
  package-load-all-descriptors()
  package-initialize()

  byte-code("\302\303!\210\302\304!\210\305\306\307\310#\210\311\312\"\313 \207" [prelude-dir package-user-dir require cl package add-to-list package-archives ("melpa" . "http://melpa.milkbox.net/packages/") t expand-file-name "elpa" package-initialize] 4)

  require(prelude-packages)
  eval-buffer(#<buffer  *load*> nil "/home/zhijia/.emacs.d/init.el" nil t)  ; Reading at buffer position 4156
  load-with-code-conversion("/home/zhijia/.emacs.d/init.el" "/home/zhijia/.emacs.d/init.el" nil nil)

  load("/home/zhijia/.emacs.d/init.el" nil nil t)
  load-file("~/.emacs.d/init.el")
  call-interactively(load-file record nil)
  command-execute(load-file record)
  execute-extended-command(nil "load-file")
  call-interactively(execute-extended-command nil nil)

2 个答案:

答案 0 :(得分:2)

您似乎需要删除〜/ emacs.d / elpa / company-XXX并重新安装。

即使您使用-Q调用它,它仍然有一个检查~/.emacs.d/目录的启动文件。

首先尝试删除.elc文件,然后删除所有内容。

答案 1 :(得分:2)

删除~/.emacs.d/elpa,重新启动Emacs,让Prelude再次安装所有软件包。

看起来你在不同的Emacs版本中偶然发现了package.el之间的不兼容性。不过,我不知道为什么。通常,只有在从Emacs 23升级到24或从Emacs 24.3升级到(尚未发布的)Emacs 24.4时才会出现这样的错误。但是,这些似乎都不是这样的。

您也会因emacs -Q而收到此错误,因为emacs -Q仍会从~/.emacs.d/elpa加载所有用户安装的包。