比如 M-x
:
在弹出窗口顶端有提示「C-j: Describe this command (keeping session)」,按下之后临时弹出 *Help*
窗口:
但 describe-{variable, function}
的时候 C-j
变成 DoNothing 了:
我试了一下早期的 helm-20190331.750 按 C-j 是有相应的 persistent action 的。
比如 M-x
:
在弹出窗口顶端有提示「C-j: Describe this command (keeping session)」,按下之后临时弹出 *Help*
窗口:
但 describe-{variable, function}
的时候 C-j
变成 DoNothing 了:
我试了一下早期的 helm-20190331.750 按 C-j 是有相应的 persistent action 的。
找到原因了。
被 @thierryvolpiatto 在 Allow minibuffer completion using emacs style · emacs-helm/helm@070adab · GitHub 明确删除了:
(helm-completing-read-handlers-alist): Now completion on symbols use emacs style with default handler, remove entries using helm-completing-read-symbols.
自己加回去就可以了。
不知为何要删除这些设置,留着会有什么影响?多亏了 git 二分法帮我迅速定位问题所在。
不清楚所谓的 emacs style completion-styles
是什么情况?很久前,我这里的 Helm 体验变得很差,不知道是 Helm 还是 Emacs 还是两者的缘故,匹配和之前不同了,后来我设置了 (setq helm-completion-style 'flex)
,到现在也没搞清楚怎么回事。
这个我也困惑了一阵子。同一个 style 竟然表现不一致,最后只好分开设置:
(setq helm-completion-style 'helm-fuzzy)
(define-advice helm-M-x (:around (fn arg) set-emacs-completion-style)
(let ((helm-completion-style 'emacs))
(funcall fn arg))))
现在不知道有没有修复。
试了一下 flex
和 '(flex)
(后者是作者推荐的写法) 都有问题。会导致 kill-buffer
排序颠倒,默认选中项竟然不是当前 buffer, 刚刚已经错杀好几个 buffer 了:
这个问题竟然又是在 070adab3a18def6f9a602cad98ba9197e106606f 引入的😓