看起来 Emacs 28 要发布了

还在用26, 不太喜欢27, 等28正式版

为啥不喜欢 27?

用了也没多大提升啊,编译还费时,刚安装包都很卡顿

他喜欢偶数 :joy:

1 个赞

我的感受跟两位一样,nativecomp 并没有带来速度的提升,反而平白消耗了许多编译时间。

3 个赞

同感,所以我现在统一用 EmacsGit,跟着 nix 社区的 emacs-overlay 更新,让CI 帮我编译并上传到 Cachix,这样本地可以很少的时间就能用上最新版。如果用 EmacsGcc,编译时间长很多。

1 个赞

如果电脑能胜任,我就本地编译。本地编译的好处是有源代码可以调试。

1 个赞

最近遇到 xref-find-definition 后没法返回,不知道是不是跟远程编译有关。emacs -q 可以重现。

command-execute: Autoloading file /nix/store/ss33d2r5f7vcxca19jdnnp2q8rlapcm2-emacs-packages-deps/share/emacs/site-lisp/elpa/xref-1.3.2/xref.elc failed to define function xref-go-back

可能跟使用场景有关吧,大部分的包都对性能的要求不高。而内部一些对性能要求高的插件基本上都用 C 重新实现了,另一个可能,或许是因为最近 Emacs 最近的几个版本 Elisp 的性能一直在优化,在提高的关系?

无关,xref的api变了

这个现象只有在 Nix 下面有,Windows 上同样是编译最新的Emacs,没这个问题。知道怎么修吗?

27的更新感觉不到提升, 比如pdump感觉效果不明显, 原生json解析对lsp的卡顿改善不明显. 大问题没解决, 反倒有一些新问题, 比如macos上显示空白, 闪烁等.

好像是有这个规律, 从23开始到现在, 24和26用的时间最长, 23, 25, 27都没怎么用.

windows平台已经躺平了,notepad3+emeditor,前者是改改小文件,大文件就用emeditor了

没看明白「没法反回」是什么意思。

就是没法通过 xref-go-back 命令返回到上一个位置。执行xref-go-back 会报下面的错误:

command-execute: Autoloading file /nix/store/ss33d2r5f7vcxca19jdnnp2q8rlapcm2-emacs-packages-deps/share/emacs/site-lisp/elpa/xref-1.3.2/xref.elc failed to define function xref-go-back

init file - Projectile installed but "Autoloading failed to define function projectile-mode" - Emacs Stack Exchange

You got the error “Autoloading failed to define function” because multiple packages are apparently active in your load-path. Try M-x list-load-path-shadows to get a clue which packages are conflicting.

执行 list-load-path-shadows 可以看到是 nix 安装的这个 elpa 版本的 xref 挡住了 emacsGit 自带的 xref

/nix/store/ss33d2r5f7vcxca19jdnnp2q8rlapcm2-emacs-packages-deps/share/emacs/site-lisp/elpa/xref-1.3.2/xref hides /nix/store/k0xw4azi63qpp5wj3vicndkyny6c806f-emacs-git-20211204.0/share/emacs/29.0.50/lisp/progmodes/xref

是 eglot 这个包依赖了 xref,但它不会使用内置的xref

Package xref is external.

     Status: External in ‘/nix/store/ss33d2r5f7vcxca19jdnnp2q8rlapcm2-emacs-packages-deps/share/emacs/site-lisp/elpa/xref-1.3.2/’ (unsigned).
    Version: 1.3.2
    Summary: Cross-referencing commands
   Requires: emacs-26.1
Required by: eglot-20211116.823
    Website: https://elpa.gnu.org/packages/xref.html
Other versions: 1.3.2 (gnu), 1.3.2 (builtin).

@twlz0ne 果然是这个问题,把 eglot 从 nix 中去除,就会使用Emacs 自带的 xref,一切就正常了。 请问下,怎么通过 nix 安装 eglot ,让它使用内置的 xref?

macos 显示空白是苹果的问题,不是 Emacs 本身的问题,已经在 28 被解决

安装/编译 eglot 之前,提前加载内置包试试。

或者重新把内置的包加到 load-path 靠前的位置。