由于“make-local-hook”,无法为emacs加载C#模式

时间:2012-04-06 07:49:08

标签: c# emacs elisp

模式:http://www.emacswiki.org/emacs/CSharpMode

日志:

Loading /.emacs.d/contrib/dev/csharp-mode.el
Done loading /.emacs.d/contrib/dev/csharp-mode.el
File mode specification error: (void-function make-local-hook)
Loading vc-git...done
When done with a buffer, type C-x #
(No files need saving)
File mode specification error: (void-function make-local-hook)
When done with a buffer, type C-x #
Making completion list... [2 times]
goto-history-element: End of history; no default available [3 times]
or: Symbol's function definition is void: make-local-hook
mouse-minibuffer-check: Minibuffer window is not active
(No files need saving)
When done with a buffer, type C-x #
(No files need saving)
File mode specification error: (void-function make-local-hook)
When done with a buffer, type C-x #
Making completion list... [2 times]
or: Symbol's function definition is void: make-local-hook

为什么?我该如何解决?

1 个答案:

答案 0 :(得分:8)

多年来,

make-local-hook已经过时,并且已在Emacs 24中完全删除。

您应该尝试找到该库的更新版本。根据您链接的Wiki页面,最新版本如下:
http://code.google.com/p/csharpmode/

如果失败了,那么代码中很有可能只包含那些函数调用以保持与Emacs 20的向后兼容性,并且只要存在对add-hook的适当调用,您需要做的就是从代码中删除(make-local-hook HOOK)的所有实例。

以下是旧文档字符串的相关内容:

  

(make-local-hook HOOK)

     

此功能自21.1起已过时;      不再需要了。

     

使钩子HOOK在当前缓冲区本地。      返回值为HOOK。

     

你现在永远不需要调用这个函数,因为`add-hook'为你做了      如果它的LOCAL参数是非零的。

另见 C-h f add-hook RET