aboutsummaryrefslogtreecommitdiff
path: root/evil-jumps.el
diff options
context:
space:
mode:
authorErik Hahn <erik_hahn@gmx.de>2019-05-17 19:59:28 +0200
committerEivind Fonn <evfonn@gmail.com>2020-08-16 09:19:48 +0200
commit24518d163dfd165eacbec3bb54a0d997fb38bc4e (patch)
tree6b5b8b56ce1f74bc82b134dfd4ec633dbcaa1655 /evil-jumps.el
parent19d225d9aa221c1f709a3706c0c715ccddfa155b (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.el27
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))))