diff options
| author | Erik Hahn <erik_hahn@gmx.de> | 2019-06-12 21:09:50 +0200 |
|---|---|---|
| committer | Eivind Fonn <evfonn@gmail.com> | 2020-08-16 09:19:48 +0200 |
| commit | 8b09542a19f0e8fa376476d56c17de3f9cb5fbd3 (patch) | |
| tree | fb93b08898760d104811e4adc95b1f5e9357cd4c /evil-jumps.el | |
| parent | cc6324bfd214211fe0259290b322dccfbdcf447f (diff) | |
Add comment explaining `evil--jumps-jumping-backward'
Diffstat (limited to 'evil-jumps.el')
| -rw-r--r-- | evil-jumps.el | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/evil-jumps.el b/evil-jumps.el index c45e593..a166757 100644 --- a/evil-jumps.el +++ b/evil-jumps.el @@ -308,10 +308,25 @@ change the current buffer." (previous-pos (evil-jumps-struct-previous-pos struct))) (when previous-pos (setf (evil-jumps-struct-previous-pos struct) nil) - (if (and (not jumping-backward) - (let ((previous-buffer (marker-buffer previous-pos))) - (and previous-buffer - (not (eq previous-buffer (window-buffer window)))))) + (if (and + ;; `evil-jump-backward' (and other backward jumping + ;; commands) needs to be handled specially. When + ;; jumping backward multiple times, calling + ;; `evil-set-jump' is always wrong: If you jump back + ;; twice and we call `evil-set-jump' after the second + ;; time, we clear the forward jump list and + ;; `evil--jump-forward' won't work. + + ;; The first time you jump backward, setting a jump + ;; point is sometimes correct. But we don't do it + ;; here because this function is called after + ;; `evil--jump-backward' has updated our position in + ;; the jump list so, again, `evil-set-jump' would + ;; break `evil--jump-forward'. + (not jumping-backward) + (let ((previous-buffer (marker-buffer previous-pos))) + (and previous-buffer + (not (eq previous-buffer (window-buffer window)))))) (evil-set-jump previous-pos) (set-marker previous-pos nil)))))))) |
