使用 org-babel-load-file
来加载 Org Mode 写 Emacs的配置文件,我发现它总是要先编译成 el 文件再加载。
所以我想将这个编译这个过程抽出放到 Emacs 退出时执行
hook 是找到了 (add-hook 'kill-emacs-hook (lambda () () ))
但是没有找到 将 Org Mode 编译成 Elisp/elc 的函数 所以来问有没有人知道
使用 org-babel-load-file
来加载 Org Mode 写 Emacs的配置文件,我发现它总是要先编译成 el 文件再加载。
所以我想将这个编译这个过程抽出放到 Emacs 退出时执行
hook 是找到了 (add-hook 'kill-emacs-hook (lambda () () ))
但是没有找到 将 Org Mode 编译成 Elisp/elc 的函数 所以来问有没有人知道
只能硬看 org-babel-load-file
源码(还不知道 Doom 中 Debug Elisp 方式)
实现了 Org Mode 编译成 Elisp/elc 的函数
;; Org Mode 编译成 Elisp/elc 的函数
(defun compile-Org-to-elisp (file)
(let ((tan (concat
(file-name-sans-extension file) ".el")
))
(org-babel-tangle-file file tan "emacs-lisp\\|elisp")
(byte-compile-file tan)
)
)
;; Emacs 退出时将 Org Mode 先编译成 Elisp
;; 再对这个路径下的所有 el 文件编译成 elc 文件
(add-hook 'kill-emacs-hook (lambda ()
(compile-Org-to-elisp "e:/emacs26-3/.doom.d/oc/toOrg.org")
(compile-Org-to-elisp "e:/emacs26-3/.doom.d/oc/keybinding.org")
(compile-Org-to-elisp "e:/emacs26-3/.doom.d/oc/OrgConfig.org")
(compile-Org-to-elisp "e:/emacs26-3/.doom.d/oc/Mode.org")
(byte-recompile-directory "e:/emacs26-3/.doom.d/oc/")
))
我加载 elc 用的 load
,没时间再想其他优化了(到是能降一些启动速度)
;; 不用加文件后缀名
;; 默认优先加载 elc 文件
;; load 只会加载一个文件
;; 有多个 elc 文件需要加载话,依下面重复写
(load "e:/emacs26-3/.doom.d/oc/toOrg")
不是有 tangle 的嘛…
tangle 之后 bytes compile + native compile 就好
tangle 是那个函数