我在emacs中将其添加到我的init.el中
(add-hook 'emacs-startup-hook
(lambda ()
(kill-buffer "*scratch*")
(ido-mode t)
(global-visual-line-mode 1)))
(add-hook 'clojure-mode-hook
(lambda ()
(rainbow-delimiters-mode 1)))
现在emacs会自动将单词lambda
变成符号 lambda ,但我不知道这是不是问题。当我启动emacs时,它会报告:
(lambda (line) ...) quoted with ' rather than with #'
但我没有引用lambda。如果我删除上面的代码行,错误就会消失。
为什么它会给我这个错误?
答案 0 :(得分:3)
这不是代码中的错误,而是在Emacs提供的一些代码中,这些代码由您调用的其中一个函数调用。很可能是Emacs bug #11357。
您的代码是合适的,除非sds指出您使用emacs-startup-hook
过度复杂化了。大多数事情都可以在你加载.emacs
时完成。
(ido-mode t)
(global-visual-line-mode 1)
(add-hook 'emacs-startup-hook
(lambda ()
(kill-buffer "*scratch*")))
我可以考虑使用emacs-startup-hook
的唯一原因是,如果您经常重新加载.emacs
和,则经常更改ido-mode
或{ {1}}并且在重新加载global-visual-line-mode
时不希望它们被还原。
有关从Emacs中获取更多信息而非杀死.emacs
的其他方法,请参阅Automatically closing the scratch buffer和Prevent unwanted buffers from opening。
答案 1 :(得分:2)
警告中的lambda
有一个line
参数;你的钩子没有。您的init文件中有不同的引用lambda
,或者这是字节编译器中的错误。
没有理由引用lambdas;你做对了。
我认为您没有以正确的方式使用emacs-startup-hook
;只需将(ido-mode t)
和(global-visual-line-mode 1)
放在init文件中。