helm-imen-persistent-action 搜索光标下字符并高亮的行为正常吗?

虽然一直在用 helm,但有时对它的行为还是会感到困惑。

比如运行 helm-imenu 之后,按 C-j 定位某个函数(用普通的高亮色标记)。由于菜单弹出之前,光标落在 defun 上,结果所有的 defun 都被查找出来并高亮成红色:

Screenshot_2020-08-01_at_2.05.54_AM--helm-imenu-persistent-action

这是 bug 还是就这么设计的?


重现步骤:

  1. 准备一个空白的 elisp 缓冲。
  2. 粘贴一下代码:
(defun foo () nil)

(defun bar () nil)

(defun qux () nil)

(save-excursion
  (goto-char (point-min))
  (forward-char 1) ;; move to ‘defun’
  (minibuffer-with-setup-hook
      (lambda ()
        (execute-kbd-macro (kbd "C-j"))) ;; persistent action
    (helm-imenu)))
  1. C-x e 执行最后一个 form。

提了 issue,作者说没问题:Unexpected highlight when executing helm-imenu-persistent-action · Issue #2354 · emacs-helm/helm · GitHub

我认为这些高亮很突兀啊,应该等到有输入的时候再高亮,而且吧高亮限定在所有(包括潜在的)的 helm-selection-line 上,如:

Screenshot_2020-08-01_at_8_06_51_PM--helm-imen-persistent-action--expected-highlight

没输入就高亮,而且有的高亮的地方处于 helm-selection-line 之外,是在不合理。

等等看能不能说服作者吧。

没注意到过这个问题,或许这个实现和 helm-occur 一样,所以会有这个问题。

作者已经认同我的观点了,并藉此发现了另一个 bug。

作者虽然一开始认为是个 bug,但只承认一半。据理力争之后,另一半终于也改了。提 issue 不易啊。