pdumper 的 elpa load-path 问题,以及一个 workaround。

近段时间使用 pdumper 的总结继续讨论:

我试了下 pdumper,因为有些包不适合 dump (比如 wanderlust) 所以只 dump 了 ivy, which-key, smex 這些必用的。

(load (concat user-emacs-directory "pkgs"))
(dolist (package
         '(mwim unfill hl-todo smex diminish swiper
                which-key paren-face
                bind-key))
  (require package))
;;(dolist (elt (package--alist))
;;  (package-activate (car elt) t))
(print load-path)
(defconst dumped-load-path load-path)
(garbage-collect)
(dump-emacs-portable "~/.emacs.d/Emacs.pdmp")

问题是这样的 dumped-load-path 里不会有 elpa 里的 path。也不知道为啥这样 load-path 里面没有包括 elpa 也还能 require。 Emacs 27 不用 (package-initialize),加了对 load-path 也不起作用。 得用上面注释掉的代码才能设置好 load-path

pdumper 只能用 --batch,which 默认开 -q 的。

现在还是不能和 nc 一起用吗

廿,我懂了,我用自己的 Emacs.dump 覆盖了默认的导致了这个问题。(package-initialize) 是必要的。

为什么不可以

额,我也是之前看到论坛里说的

我的意思是要先加载package然后dump(比如用 --eval 然后 require),他直接一个啥都没加载就dump了

嗯,我看的几个教程都没注意到这点,虽然没啥实际影响,但我估计他们是从同一个来源抄的。

顺带我研究了下 startup.el 发现 emacs 默认的 splash screen 就定义在里面,我抄了点东西改进了下我自己的 spacemacs-buffer