我在调教evil-jump使其更符合直觉,但是遇到了一个问题
(defun +amos*evil--jumps-jump (idx shift)
(let ((target-list (evil--jumps-get-window-jump-list)))
(let* ((current-file-name (or (buffer-file-name) (buffer-name)))
(size (ring-length target-list)))
(let* ((place (ring-ref target-list idx))
(pos (car place))
(file-name (cadr place)))
(unless (and (string= (if buffer-file-name
buffer-file-name
(buffer-name))
file-name)
;; evil eol
(or (= (point) pos) (= (+ (point) 1) pos))) <----- 这里如何判断(point)和pos指向同一行
(setq shift 0)))
(setq idx (+ idx shift))
(when (and (< idx size) (>= idx 0))
;; actual jump
(run-hooks 'evil-jumps-pre-jump-hook)
(let* ((place (ring-ref target-list idx))
(pos (car place))
(file-name (cadr place)))
(setq evil--jumps-jumping t)
(if (string-match-p evil--jumps-buffer-targets file-name)
(switch-to-buffer file-name)
(find-file file-name))
(setq evil--jumps-jumping nil)
(goto-char pos)
(setf (evil-jumps-struct-idx (evil--jumps-get-current)) idx)
(run-hooks 'evil-jumps-post-jump-hook))))))
(advice-add #'evil--jumps-jump :override #'+amos*evil--jumps-jump)