diff --git a/core/core-editor.el b/core/core-editor.el index 2a847d792..091ad443b 100644 --- a/core/core-editor.el +++ b/core/core-editor.el @@ -253,11 +253,8 @@ savehist file." (helpful-variable (button-get button 'apropos-symbol))))))) -(def-package! imenu - :defer t - :config - (add-hook 'imenu-after-jump-hook #'better-jumper-set-jump) - (add-hook 'imenu-after-jump-hook #'recenter)) +;;;###package imenu +(add-hook 'imenu-after-jump-hook #'recenter) (def-package! smartparens diff --git a/modules/completion/ivy/config.el b/modules/completion/ivy/config.el index 4862eef2d..2756ada86 100644 --- a/modules/completion/ivy/config.el +++ b/modules/completion/ivy/config.el @@ -62,6 +62,22 @@ immediately runs it on the current candidate (ending the ivy session)." ;; enable ability to select prompt (alternative to `ivy-immediate-done') ivy-use-selectable-prompt t) + ;; Ensure a jump point is registered before jumping to new locations with ivy + (defvar +ivy--origin nil) + + (defun +ivy|record-position-maybe () + (with-ivy-window + (setq +ivy--origin (point-marker)))) + (setq ivy-hooks-alist '((t . +ivy|record-position-maybe))) + + (defun +ivy|set-jump-point-maybe () + (when (and (markerp +ivy--origin) + (not (equal (with-ivy-window (point-marker)) +ivy--origin))) + (with-current-buffer (marker-buffer +ivy--origin) + (better-jumper-set-jump +ivy--origin))) + (setq +ivy--origin nil)) + (add-hook 'minibuffer-exit-hook #'+ivy|set-jump-point-maybe) + (after! yasnippet (add-to-list 'yas-prompt-functions #'+ivy-yas-prompt nil #'eq))