【发布时间】:2014-03-31 23:03:42
【问题描述】:
我是 emacs 的新手...所以我试图安装 ya-sn-ps 为此,我首先下载了 ya-sn-p tar 文件,然后将其解压缩,然后将其保留为 .emacs.d/packages/ 然后将以下代码添加到我的 .emacs 文件中
;; yasnippet
(add-to-list 'load-path
"~/.emacs.d/packages/yasnippet")
(require 'yasnippet)
(yas-global-mode 1)
但我得到以下错误...
Warning (initialization): An error occurred while loading `/home/nitesh/.emacs':
Symbol's function definition is void: yas-global-mode
To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
the `--debug-init' option to view a complete error backtrace.
请告诉我错误,因为我是 emacs 新手,请告诉我为配置 yasn-p 编写的 .emacs 文件的每一行在做什么? 请告诉我要添加什么到 .emacs 文件中,以便 ya -sn-p 使用所有默认附带的 c/c++ sn-ps?
【问题讨论】:
-
当 Emacs 抛出
Symbol's function definition is void之类的错误时,通常意味着包(包含函数)没有被正确加载。所以你需要首先验证你在~/.emacs.d/packages/yasnippet/yasnippet.el的位置有一个名为yasnippet.el的文件,并验证该文件包含一行代码(通常在底部):(provide 'yasnippet)也许你的yasnippet.el文件在不同的文件夹(例如,更深的一个文件夹)? -
是的,这两件事都存在。我在 ~/.emacs.d/packages/yasn-p 中有 yasn-p.el,它的最后一行是 (provide 'yasn-p) 和然后在那一行之后的一些cmets(用于结束)!
-
试试
M-x load-library RET yasnippet RET怎么样?如果它加载(带有消息Loading yasn-p...done),然后尝试M-x yas-minor-mode。如果这两个步骤都有效,那么我的下一个猜测是您的.emacs文件(或您的.emacs文件调用的另一个库)中有错误,并且您的.emacs文件在您启动Emacs 时没有完全加载。在这种情况下,您应该在启动 Emacs 时查看*Messages*缓冲区中是否还有其他错误消息。 -
当我做 M-x load-library RET yasn-p RET 它说...无法打开加载文件:cl-lib
-
啊哈。 . . .好吧,那是个问题,因为
Yasnippet需要调用其他相关库的cl库——例如cl-lib。是时候将所有内容备份到安全的地方,然后将您的 Emacs 版本升级到全新的完整版本。听起来Yasnippet安装本身和您的加载路径是正确的。