看这里的邮件,预计几周后发布第一个 28的 pretest 版本,还有得等。 https://mail.gnu.org/archive/html/emacs-devel/2021-09/msg02290.html
回复 @mkvoya @wuyanzu 不至于吧,印象中 pgtk 基本上已经完工了,不至于弃坑吧。之前一直零零散散的有更新,Eli 向 pgtk 作者询问合并相关的问题后 pgtk 才开始停止更新,看当时邮件列表的回复应该是在为进入 master 做调整才对。
弃坑应该不至于,可能只是最近更新少
就是不知道pgtk能不能在28版本中发布了,因为按说一个版本cut了,就会进入bug-fix only的阶段,不会有新功能加进来了:
In mid September we’ll evaluate the situation again, and if things look OK, we’ll cut the emacs-28 branch (which will then be “bug fix only” after that), and then move “master” to 29.0.50.
关于pgtk,reddit上Eli的回复:
It didn’t look ready, and we didn’t want to delay the branching any longer.
有点可惜呀!
基本上处于无欲无求状态
快是因为 Emacs 28 之于 Emacs 27 多了太多东西了,你看 NEWS.27
和 NEWS.28
的行数
4570 NEWS.28
3256 NEWS.27
说几点可感受到的变化:
- emoji 的原生支持,可以用单个的 glyph 来显示了,原来则是通过多个 glyph 拼接起来的
-
interactive
里可以写当前命令可应用的 mode, 这样搭配(setq read-extended-command-predicate #'command-completion-default-include-p)
可以将那些不适用当前 mode 的函数在 M-x 时过滤掉. -
context-menu-mode
,可以按 S-F10 和 C-鼠标右击 对比一下 -
dired-kill-when-opening-new-dired-buffer
终于 dired 在 RET 时不会产生新的 buffer 了 -
tab-bar-show
终于可以隐藏 tab-bar 了 - C-x x 前缀被用起来了,现在里面包含 buffer 相关的操作
-
redisplay-skip-fontification-on-input
缓解在快速移动时大量代码的语法高亮 -
word-wrap-by-category
解决了 CJK 字符在 auto-fill-mode 时的问题。由 @casouri 贡献 - isearch 更现代化。isearch 的 C-s C-r 之后会继续搜索,而不是仅仅换了个搜索方向; isearch 里可以按 M-< 和 M-> 来回到搜索关键字的首次/末尾出现地方,最后而不是回到当前 buffer 的开头和末尾;
isearch-motion-changes-direction
isearch-allow-motion
- eshell 的 keymap 可以直接定义在
eshell-mode-map
里,以前必须要每次都在eshell-first-time-mode-hook
里用define-key
来定义一遍,非常奇怪 - 自带 icomplete-vertical-mode 了
- eldoc 支持多个后端函数
- cc-mode 支持注释中 doxygen 的高亮
- 内置的 project.el 进步很多
- xref 提升非常大
- 可以用 rg 了(
xref-search-program
),这样在调用project-find-regexp
(C-x p g) 时会比 grep 快许多 -
xref-show-xrefs-function
和xref-show-definitions-function
可以设置成xref-show-definitions-completing-read
了,表示 xref 的选择定义时可以原生使用 minibuffer,以前 ivy 的话得用 ivy-xref, vertico/selectrum 的话得设置成 consult-xref.
- 可以用 rg 了(
- rcirc 提升非常大
- 支持 sasl 了
- 颜色支持好了
- 异步化
- IRCv3 协议支持
- erc 不熟悉,似乎是达到了单独在 ELPA 上发布的程度了。 PS: Emacs 开发者也是正在为 Emacs 的瘦身做准备中
-
repeat-mode
, C-x o C-x o 到 C-x o o. 没错正是在下提议的 - native-comp 合并了
其他的话可以自己看 NEWS.28 这个文件。
你好,请问内置的project这样是不是可以替代projectile了?
写得真详细,你字多信你
谢谢,只能期待 29 的时候可以上了。
如果你依赖的只是在项目里切换文件,那么自带的 project.el 就足够了。但是如果涉及到编译项目,那么 project.el 目前只是单纯的调用 compile
命令而已。反观 projectile,其自带了许多项目管理工具的识别,如 cmake, meson 等等
对,主要还是生态。projectile和很多包都做了集成,project还差很多
多谢回复,我没有那么大需求,看来我可以研究下project.el.
Emacs 28 一创建我就开始用了,以至于最近才发现在 27 及以降版本上的宏不能这样写:
(defmacro test (x)
(let ((x-type (cond ((consp x) 'cons)
((stringp x) 'string)
((symbolp x) 'symbol)
(t (error "Unknown type of ‘%S’" x)))))
`(pcase ',x-type
('cons (list ,@x))
('string (list ,x))
('symbol (list ',x)))))
(condition-case err
(macroexpand '(test "foo"))
(error err))
;; 27-
;; => (wrong-type-argument listp "foo")
;; 28+
;; => (cond ((eq 'string 'cons) (let nil (list . "foo")))
;; ((eq 'string 'string) (let nil (list "foo")))
;; ((eq 'string 'symbol) (let nil (list '"foo"))))
pcase 看起来在对未使用分支的处理上存在问题。
Emacs 28.0.90 pretest 版本已经出来了
https://lists.gnu.org/archive/html/emacs-devel/2021-12/msg00217.html
Nix 社区的 emacs-overlay 也已经更新了 28.0.90
已经用上29了
其实我也是主要用 Emacs 29,主要是 Polu 大佬的像素滚动太好用了,不然真想回到 Emacs 28
再等几个月才会发布吧,谁记得 emacs 21 在 pretest 环节卡了一年