Emacs索赔I';我引用的是lambda,但我';我不是
我在emacs中的init.el中添加了以下内容:Emacs索赔I';我引用的是lambda,但我';我不是,emacs,clojure,elisp,emacs24,Emacs,Clojure,Elisp,Emacs24,我在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转换为符号
(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)…)用“而不是#”引述
但我不是在引用lambda。如果我删除上面的代码行,错误就会消失
为什么它会给我这个错误
lambda
有一个行
参数;你的钩子没有。您的init文件中有一个不同的带引号的lambda
,或者这是字节编译器中的一个错误(ido模式t)
和(全局可视线模式1)
按原样放入init文件这不是代码中的错误,而是由您正在调用的函数之一调用的Emacs提供的某些代码中的错误。很有可能 您的代码是合适的,但正如sds所指出的,您使用
emacs启动挂钩将事情过度复杂化了。在加载.emacs
时,大多数事情都可以正确完成
(ido-mode t)
(global-visual-line-mode 1)
(add-hook 'emacs-startup-hook
(lambda ()
(kill-buffer "*scratch*")))
我能想到的使用emacs启动钩子的唯一原因是,如果您经常重新加载.emacs
,并且经常更改ido模式
或全局可视线模式
,并且不希望在重新加载.emacs
时将它们还原
有关从Emacs中获得比杀死*scratch*
更多信息的其他方法,请参阅和。上述lambda
中没有字段
参数。它一定是另一个lambda
@Tobias不确定它是否有区别,但实际上它使用了“行”而不是“字段”这个词。我已经更新了这个问题。我无法想象它是任何其他lambda,因为如果我去掉上面的,错误就会消失,所有的东西都会加载。这没有什么区别。在init文件中搜索”(lambda
无论如何。我的印象是,有时候字节编译器对需要重新编译的内容和不需要重新编译的内容太聪明了。引用的lambda可以在其他地方。