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

cnd*_*cnd 2 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
Run Code Online (Sandbox Code Playgroud)

为什么?我该如何解决?

phi*_*ils 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-hf add-hook RET