Spacemacs to the Moon!

Spacemacs 在 moon branch 的最新改动:

使用了 emacs 27.1 的一个未合并分支的 feature,将 emacs dump 到一个文件中。

用户需要编译一个 27 版本的 emacs,按原来方式启动 emacs 后会自动根据 layer dump,然后用 emacs 27 启动 spacemacs。

会以 asnyc 的方式调用 emacs dump (我还没试,不知道具体什么效果)

说明文件:

https://github.com/syl20bnr/spacemacs/blob/moon/EXPERIMENTAL.org

目测就是这个。

说的那个 featrue 是这个。

2 个赞

想想还有点小激动,虽然我的 emacs 几天才关一次。

我觉得这个功能最主要的卖点在于 portable 吧?把 dump 的文件随便拷贝,然后随身携带可以快速启动的 spacemacs,好像会很爽。

1 个赞

The Emacs dumper dispute

2 个赞

早退 GNU 平安保

1 个赞

总结一下:

目前 emacs 的维护者 Eli 威胁要退出 emacs 维护,如果 dumper 方案被采用。RMS 等多数开发者倾向于采用这一方案。所以,对我等小白,管他呢,只管用。

1 个赞

看到 spacemacs 添加了 --force-dump 参数,我有一点疑问,如果更新了 elisp 包,需要强制重新 dump 吗?

完全可以选择不用。加载了 dump image 以后还可以加载别的包的。

从自己使用情况看, 启动时间不是大问题, 问题是desktop加载200个文件太耗时了, 文件是否可以延时加载? 跟autoload类似, 比如一个文件的buffer是存在, 但是buffer的内容不存在(没有加载), 切换到改buffer的时候才加载对应的文件

这是该提案刚开始的时候, 现在人家态度已经不一样了

把 buffer list 换成 resent file list 就行。

recentf被我hack过了, 这些会话文件都不在recent list里, recent list里我用来记录偶尔用一次并关闭的文件(已经有很多了), 我的文件分两类: 1. 常开的, 2. 偶尔开一次的, 但会反复打开.

emacs原生支持这个功能应该不是很麻烦.

那可以搞第二个 “resent file list” 啊

那就是desktop buffer list了, 那要hack desktop, 老了, 没时间hack了

解决方法有,hack不hack就是你的问题了……

有心想尝尝鲜,结果没进去,直接 seg fault 了……

Fatal error 11: Segmentation fault
Backtrace:
/home/jw/git/emacs/src/emacs[0x4fb479]
/home/jw/git/emacs/src/emacs[0x4e1817]
/home/jw/git/emacs/src/emacs[0x4f9dde]
/home/jw/git/emacs/src/emacs[0x4fa0e3]
/home/jw/git/emacs/src/emacs[0x4fa120]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7fe02b8f4390]
/home/jw/git/emacs/src/emacs[0x4f6339]
/home/jw/git/emacs/src/emacs[0x55e5d6]
/home/jw/git/emacs/src/emacs[0x599b68]
/home/jw/git/emacs/src/emacs[0x55e12a]
/home/jw/git/emacs/src/emacs[0x55e533]
/home/jw/git/emacs/src/emacs[0x599b68]
/home/jw/git/emacs/src/emacs[0x55e12a]
/home/jw/git/emacs/src/emacs[0x55e533]
/home/jw/git/emacs/src/emacs[0x599b68]
/home/jw/git/emacs/src/emacs[0x55e12a]
/home/jw/git/emacs/src/emacs[0x55e533]
/home/jw/git/emacs/src/emacs[0x599b68]
/home/jw/git/emacs/src/emacs[0x55e12a]
/home/jw/git/emacs/src/emacs[0x55e533]
/home/jw/git/emacs/src/emacs[0x5602c3]
/home/jw/git/emacs/src/emacs[0x55e5d6]
/home/jw/git/emacs/src/emacs[0x599b68]
/home/jw/git/emacs/src/emacs[0x55e533]
/home/jw/git/emacs/src/emacs[0x599b68]
/home/jw/git/emacs/src/emacs[0x55e533]
/home/jw/git/emacs/src/emacs[0x55e668]
/home/jw/git/emacs/src/emacs[0x50fad7]
/home/jw/git/emacs/src/emacs[0x506658]
/home/jw/git/emacs/src/emacs[0x411c54]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fe02abf3830]
/home/jw/git/emacs/src/emacs[0x412c79]
Segmentation fault (core dumped)

估计你开了随机内存地址。

怎么判断?怎么关闭?

也就是 dump 的时候先关闭,dump 完了再打开?运行 dump 的时候用关闭吗?