我的.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,而是作为该变量中的值进入?换句话说,我希望在运行 Hook 时将消息打印出来。

最佳答案

您可以使用的是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")))))

关于emacs - 在将表达式放入lambda之前先对其求值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3265879/

10-13 09:20