2023 了, 试试 emacs 29
Table of Contents
2023 了, 元旦假期, 想体验一下新版本的 emacs, 我已经眼馋好久了
发行版还没提供? 自己编译, 而且自己编译可以自定义一些选项, 比如 pgtk
完整的新特性去看 etc/NEWS
(btw, emacs-news-mode
也是新加的)
1. build emacs (with musl?)
gcc (it's GNU emacs, so…) 参数来源:
don't run this in fish, use bash or ksh instead
./configure CFLAGS="-march=native -O3 -pipe -fno-math-errno -fgraphite-identity -floop-nest-optimize -fno-semantic-interposition -fno-strict-aliasing -fno-common -fipa-pta -fno-plt" \ LDFLAGS="-L`jemalloc-config --libdir` -Wl,-rpath,`jemalloc-config --libdir` -ljemalloc `jemalloc-config --libs`" \ --with-x=no \ --with-gpm=no \ --with-pgtk \ --with-native-compilation \ --with-json \ --with-sqlite3 \ --with-tree-sitter \ --with-webp \ --with-gif \ --with-rsvg
but what about musl? (CC=musl-gcc)
checking whether GTK compiles... no configure: error: Gtk+ wanted, but it does not compile, see config.log.
<dongdigua> hello, I tried to build emacs with musl-gcc, but it says: <dongdigua> error: Gtk+ wanted, but it does not compile <dongdigua> it can build using normal gcc <dongdigua> and it can build on voidlinux <sam_> dalias: <3 <dongdigua> o_O <sam_> dongdigua: you'd have to share some logs in full for us to help at all <sam_> but you'd be better off asking your Linux distribution <dongdigua> it is mostly `ld: error: unable to find library` <dongdigua> sam_: so i think it is probably something about the wrapper script <heat> musl-gcc (does not? should not?) pick up on host libraries because they were built against glibc and not musl <heat> so musl-gcc will not pick up on those <heat> or at least they will just not work and will break configure <dongdigua> heat: so I should use those libraries that is built on musl? <dongdigua> like voidlinux I mentioned above <heat> yes <dongdigua> ok ERC>
2. dump?
现在开启 native-comp
时 dump-emacs-portable
没法弄, 见: emacs china: emacs 29 with native-comp 无法 dump
试着不开 native-comp dump 了一下, 也就加快了 0.2s, 而且有各种问题, 算啦算啦
作为一个追求极致的人, 怎么能算了! 不能 dump 已经 dump 的 emacs, 那就放到第一步的 dump 里.
在 INSTALL 文件里说了, 自定义的配置放在 site-init.el
我把一些必要的配置用 ;;;ifdef dump
;;;endif
包上, 然后随便写一个脚本, 只保留之间的部分.
这些 "必要的配置" 是主要 GUI 相关的和不须要额外包的配置,
dump GUI 的配置很好, 之前会看到 窗口缩放以及 tool-bar 和 menu-bar 一闪而过, 现在好了.
(GUI 模式) 这为我节省了 (0.8 - 0.6)s 和(14 - 12)次 gc
btw, 后来我用 (setq use-package-verbose t)
找出来了一个我一直不咋用但是还启动时加载的包: ement,
加上另外几个包也都 defer, 降到 0.4s 了
3. 我 有切身体会/还没体验但是认为很不错 的新特性
3.2. 平滑滚动
搜索 emacs29 蹦出来的
3.3. elisp-byte-compile-file
3.4. emoji 😀
3.5. package-vc-install
但是 package-report-bug
有点迷惑
4. 我认为早就该加了但是现在才加入
4.1. erc-sasl
4.2. restart-emacs
4.3. package-update(-all)
5. 29.1
use-package
- more
*-ts-mode