我的.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")))
当lambda执行时,mode
变量显然是无效的。问题是我如何以这样的方式评估mode
,它不会将lambda作为变量而是作为该变量中的值进入?换句话说,我想在挂钩运行时打印消息。
答案 0 :(得分:10)
您可以使用的是backquote:
(dolist (mode '(scheme emacs-lisp lisp clojure))
(add-hook
(intern (concat (symbol-name mode) "-mode-hook"))
`(lambda ()
(run-programming-hook)
(message "%s" ,(concat (symbol-name mode) "-mode")))))