虽然一直在用 helm,但有时对它的行为还是会感到困惑。
比如运行 helm-imenu 之后,按 C-j
定位某个函数(用普通的高亮色标记)。由于菜单弹出之前,光标落在 defun
上,结果所有的 defun
都被查找出来并高亮成红色:
这是 bug 还是就这么设计的?
重现步骤:
- 准备一个空白的 elisp 缓冲。
- 粘贴一下代码:
(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)))
- 按
C-x e
执行最后一个 form。