Emacs helm:跳转后如何自动重新居中?

Emacs helm: How to auto-recenter after jump?

我想在使用 helm-semantic-or-imenu 或 helm-org-in-buffer-headings 跳转后使当前行重新居中,即,就像 helm-swoop 一样。可能吗?

我不使用 helm,但我这样做是为了 isearch。找出哪个函数实际跳转到一行(可能是被调用的函数,例如 helm-semantic-or-imenu,可能是某些内部辅助函数,例如 isearch),然后向其添加以下建议。

(defun recenter-no-redraw (&optional arg)
  "Like `recenter', but no redrawing."
  (interactive "P")
  (let ((recenter-redisplay nil))
    (recenter arg)))

(advice-add 'isearch-search
            :after
            (lambda (&rest args)
              "Recenter"
              (when isearch-success
                (recenter-no-redraw))))

我不记得为什么我定义了 recenter 的非重绘版本(多年来我一直都是这样)。它也应该与普通 recenter 一起使用。