如何真正lazy load emacs build-in package

elisp

#1

比如elisp-mode会在Emacs启动时就加载,下面的代码会在启动时就打印出来 (scratch buffer是text-mode)

(with-eval-after-load 'elisp-mode
  (message "how can I defer loading this"))

问题来了, 怎么defer Emacs内置的package。


#2

see this

老实说,作用有限,只能defer这些包的配置而不能defer这些包本身。


#3

Emacs 自身就会加载一些文件,甚至部分文件就是 Emacs 可执行文件的一部分,比如你提到的 elisp-mode.el,参见 preloaded-file-list

Emacs 文件加载的记录保存在 load-history

(with-current-buffer (get-buffer-create "*foo*")
  (pcase-dolist (`(,file . ,_) load-history)
    (insert file ?\n))
  (display-buffer (current-buffer)))

#4

thx,我就是看到这个感觉很hack,估计没啥更好的方法了 Spacemacs是咋做的,没仔细看,它是没搞这一步吗