Emacs启动日志

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))

2 thoughts on “Emacs启动日志

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据