diff options
| author | Erik Hahn <erik_hahn@gmx.de> | 2019-05-17 19:59:28 +0200 |
|---|---|---|
| committer | Eivind Fonn <evfonn@gmail.com> | 2020-08-16 09:19:48 +0200 |
| commit | 24518d163dfd165eacbec3bb54a0d997fb38bc4e (patch) | |
| tree | 6b5b8b56ce1f74bc82b134dfd4ec633dbcaa1655 /evil-jumps.el | |
| parent | 19d225d9aa221c1f709a3706c0c715ccddfa155b (diff) | |
evil-set-jump: handle markers for different buffers
Correctly handle the case of POS being a marker located in a buffer
other than the current one.
Diffstat (limited to 'evil-jumps.el')
| -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)))) |
