还在用26, 不太喜欢27, 等28正式版
为啥不喜欢 27?
用了也没多大提升啊,编译还费时,刚安装包都很卡顿
他喜欢偶数
我的感受跟两位一样,nativecomp 并没有带来速度的提升,反而平白消耗了许多编译时间。
同感,所以我现在统一用 EmacsGit,跟着 nix 社区的 emacs-overlay 更新,让CI 帮我编译并上传到 Cachix,这样本地可以很少的时间就能用上最新版。如果用 EmacsGcc,编译时间长很多。
如果电脑能胜任,我就本地编译。本地编译的好处是有源代码可以调试。
最近遇到 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
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
靠前的位置。