偶然发现use-package的:defer关键字是可以设定一个数值,作用是N秒idle后加载包。
乍一看感觉这个功能可以用来实现简单的incremental loading(我理解的incremental loading就是把不紧急的包加载放到idle time),但是好像没有怎么在别人的配置里面见过这个用法。
请问坛友有使用这个功能的吗,能否分享一下体验如何?
偶然发现use-package的:defer关键字是可以设定一个数值,作用是N秒idle后加载包。
乍一看感觉这个功能可以用来实现简单的incremental loading(我理解的incremental loading就是把不紧急的包加载放到idle time),但是好像没有怎么在别人的配置里面见过这个用法。
请问坛友有使用这个功能的吗,能否分享一下体验如何?
用:command比较多, 直接延迟到实际调用某个命令的时候再加载
incremental loading 是有实际实践的,doomemacs 就利用这个对 orgmode 做 defer loading。不过不是通过 usepackage 的 :defer 实现的,是自己实现的。
楼上说的是对的,主要的 lazy-loading 是通过 lazy 加载某个 interactive 的命令来实现 (即首次调用这个命令时再加载其对应的包),一般很少会去搞这种 incremental loading。
doomemacs lazy-loading orgmode 的主要原因是 orgmode 即使是在你首次调用 org 的时候加载依然很慢一样要等很多时间,不如在用户启动后就在 idle timer 里面悄悄一个个把这些耗时长的包都加载了。
具体的可以看 doom 是如何选择 incremental load org 的包的顺序的:
实际上我觉得 doom 为了 user-friendly,有点过度包装了,我们自己的配置要借鉴的话,借鉴这个核心入口函数就够了:
比如:defer 1是emacs启动后,超过1秒空闲的时候再加载。我的evil设置的是defer 1。
感谢!很详细,看来是我把incremental loading想当然了,单纯的按idle秒延迟确实还是解决不了卡顿的可能性