diff options
| -rw-r--r-- | evil-jumps.el | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/evil-jumps.el b/evil-jumps.el index 05e4e21..91eb22b 100644 --- a/evil-jumps.el +++ b/evil-jumps.el @@ -217,18 +217,21 @@ (defun evil-set-jump (&optional pos) "Set jump point at POS. POS defaults to point." - (unless (or (region-active-p) (evil-visual-state-p)) - (push-mark pos t)) - - (unless evil--jumps-jumping - ;; clear out intermediary jumps when a new one is set - (let* ((struct (evil--jumps-get-current)) - (target-list (evil--jumps-get-jumps struct)) - (idx (evil-jumps-struct-idx struct))) - (cl-loop repeat idx - do (ring-remove target-list)) - (setf (evil-jumps-struct-idx struct) -1)) - (save-excursion + (save-excursion + (when (markerp pos) + (set-buffer (marker-buffer pos))) + + (unless (or (region-active-p) (evil-visual-state-p)) + (push-mark pos t)) + + (unless evil--jumps-jumping + ;; clear out intermediary jumps when a new one is set + (let* ((struct (evil--jumps-get-current)) + (target-list (evil--jumps-get-jumps struct)) + (idx (evil-jumps-struct-idx struct))) + (cl-loop repeat idx + do (ring-remove target-list)) + (setf (evil-jumps-struct-idx struct) -1)) (when pos (goto-char pos)) (evil--jumps-push)))) |
