From de722509f5dd4008d5ed7b2c47aea64c9c4fb8c7 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Sat, 13 Aug 2022 16:21:17 +0100 Subject: [PATCH] feat(navigation): setup better-jumper to jump back after goto def style operations --- core/siren-core-modules.el | 1 + modules/navigation/siren-better-jumper.el | 66 +++++++++++++++++++++++ straight/versions/default.el | 1 + 3 files changed, 68 insertions(+) create mode 100644 modules/navigation/siren-better-jumper.el diff --git a/core/siren-core-modules.el b/core/siren-core-modules.el index 1a0c299..9174843 100644 --- a/core/siren-core-modules.el +++ b/core/siren-core-modules.el @@ -69,6 +69,7 @@ ;; Navigation (require 'siren-anzu) (require 'siren-avy) +(require 'siren-better-jumper) (require 'siren-centaur-tabs) (require 'siren-consult) (require 'siren-dired) diff --git a/modules/navigation/siren-better-jumper.el b/modules/navigation/siren-better-jumper.el new file mode 100644 index 0000000..dbbaec9 --- /dev/null +++ b/modules/navigation/siren-better-jumper.el @@ -0,0 +1,66 @@ +;;; siren-better-jumper.el --- jimeh's Emacs Siren: better-jumper configuration. + +;;; Commentary: + +;; Basic configuration for better-jumper. + +;;; Code: + +(use-package better-jumper + :hook + (prog-mode . better-jumper-local-mode) + + :general + ("M-g M-b" 'better-jumper-jump-backward) + ("M-g M-f" 'better-jumper-jump-forward) + + :custom + (better-jumper-context 'window) ;; default: 'window + (better-jumper-new-window-behavior 'copy) ;; default: 'copy + (better-jumper-add-jump-behavior 'replace) ;; default: 'append + (better-jumper-max-length 100) ;; default: 100 + + :preface + (defgroup siren-better-jumper nil + "Siren specific tweaks to tar-bar-mode." + :group 'better-jumper) + + (defvar siren-better-jumper-adviced-funs '() + "List of functions which have been adviced.") + + (defun siren-better-jumper-set-advice (orig-fun &rest args) + "Advice for ORIG-FUN to call `better-jumper-set-jump' before and after it." + (better-jumper-set-jump) + (apply orig-fun args) + (better-jumper-set-jump)) + + (defun siren-better-jumper-setup (funs) + "Advice list of FUNS with `siren-better-jumper-set-advice'." + (when (boundp 'funs) + (mapc (lambda (fun) + (advice-add fun :around #'siren-better-jumper-set-advice) + (add-to-list 'siren-better-jumper-adviced-funs fun)) + funs))) + + (defun siren-better-jumper-teardown () + "Remove all advices setup with `siren-better-jumper-setup'." + (when (boundp 'siren-better-jumper-adviced-funs) + (mapc (lambda (fun) + (advice-remove fun #'siren-better-jumper-set-advice)) + siren-better-jumper-adviced-funs) + (setq siren-better-jumper-adviced-funs '()))) + + :config + (with-eval-after-load 'dumb-jump + (siren-better-jumper-setup '(dumb-jump-go))) + (with-eval-after-load 'lsp-mode + (siren-better-jumper-setup '(lsp-find-definition))) + (with-eval-after-load 'lsp-ui-peek + (siren-better-jumper-setup '(lsp-ui-peek-find-definitions + lsp-ui-peek-find-references))) + (with-eval-after-load 'xref + (siren-better-jumper-setup '(xref-find-definitions + xref-find-references)))) + +(provide 'siren-better-jumper) +;;; siren-better-jumper.el ends here diff --git a/straight/versions/default.el b/straight/versions/default.el index cb3648b..015fb98 100644 --- a/straight/versions/default.el +++ b/straight/versions/default.el @@ -7,6 +7,7 @@ ("applescript-mode" . "9b84a7cb74d687745df37ba15113933fc6256274") ("avy" . "ba5f035be33693d1a136a5cbeedb24327f551a92") ("beginend" . "eb77d82dc88846c5715353b7fd99c9030a2e2ee7") + ("better-jumper" . "47622213783ece37d5337dc28d33b530540fc319") ("bui.el" . "f3a137628e112a91910fd33c0cff0948fa58d470") ("bundler.el" . "43efb6be4ed118b06d787ce7fbcffd68a31732a7") ("caddyfile-mode" . "fc41148f5a7eb320f070666f046fb9d88cf17680")