1
如何在函數調用的結果中編譯elisp中的變量?是否需要在所有變量的主體中添加eval-when-compile
或者是否可以確保相同的結果,而無需在所有變量定義中重寫?編譯elisp中的變量
用例正在編譯我的本地變量,這些變量在機器之間改變。例如,
(defun setup-defaults (loc)
(when (eq system-type 'windows-nt)
(cond
((file-exists-p (expand-file-name loc "~"))
(file-name-as-directory (expand-file-name loc "~")))
((file-exists-p (expand-file-name loc "d:/"))
(file-name-as-directory (expand-file-name loc "d:/"))))))
(defconst my/org (setup-defaults "org"))
(defconst my/home
(eval-when-compile
(file-name-directory
(file-chase-links (or load-file-name "~/.emacs.d/init.el")))))
變量my/home
將被編譯爲「〜/ .emacs.d /」,但my/org
不會在字節編譯評估,除非我把它改寫爲
(defconst my/org (eval-when-compile (setup-defaults "org")))
所以,我是否需要爲我的所有變量做到這一點?