5
之前,我有以下的代码在我.emacs
:计算表达式它放在拉姆达
(dolist (mode '(scheme emacs-lisp lisp clojure))
(add-hook
(intern (concat (symbol-name mode) "-mode-hook"))
(lambda()
(progn
(run-programming-hook)
(message "%s" (concat (symbol-name mode) "-mode")))
显然mode
变量是无效的,当拉姆达得到执行。问题是我如何评估mode
这样一种方式,它不会将lambda作为变量进入,而是作为该变量的值?换句话说,我希望在钩子运行时打印消息。
只是快速记:你的“......显然是无效的”是错误的 - 它应该* * *不*是这样,和Emacs Lisp是这仍然发生的几种语言之一。它被称为动态范围。与此相关的是,在Emacs中查找'lexical-let'形式,这是一种模拟可以工作的更为明智的行为。 – 2010-07-17 22:21:21