Emacs启动日志,让我对自己的配置和Emacs的启动过程有了更多了解。如图:
muse-mode
多年不用,居然还隐藏在我的配置脚本的某个角落里。加载失败,是因为在机器里根本没有它。尽管加载失败,但启动过程并没有因此中断,是因为我使用了require-maybe来加载它,在找不到的情况下,忽略之,而不是报错。
使用require-maybe
而不是require
,是因为某些软件包不包含在Emacs的官方发布里,如果不存在,一来不需要对其进行配置,二来不会中断启动过程,影响对核心功能的配置。
唯一的缺陷就是不清楚到底哪些加载成功哪些加载失败。有了启动日志,一目了然。
经过扩展的require-maybe
代码如下:
(defmacro require-maybe (feature &optional file) "*Try to require FEATURE, but don't signal an error if `require' fails." `(let ((require-result (require ,feature ,file 'noerror))) (with-current-buffer (get-buffer-create "*Startup Log*") (let* ((startup-log-format-string-prefix "%-20s--------[") (startup-log-format-string-postfix "%s") (startup-status (if require-result "LOADED" "FAILED")) (startup-status-face `(face (:foreground ,(if require-result "green" "red"))))) (insert (format startup-log-format-string-prefix ,feature)) (let ((start-pos (point))) (insert (format startup-log-format-string-postfix startup-status)) (add-text-properties start-pos (point) startup-status-face) (insert "]\n")))) require-result))
hi, emacser, 你是如何打开这个日志的呢?是哪个启动参数,还是说加载了一个第三方package?
这个日志是使用require-maybe在Emacs启动时动态生成的。