如何判断两个marker是否指向同一行

我在调教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)

暂时先用这个好了

(save-excursion
                       (let ((a (progn (end-of-line) (point)))
                             (b (progn (goto-char pos) (end-of-line) (point))))
                         (= a b)))

非 Evil 用户,不了解具体什么情况,只考虑这一句话的话:

(<= (line-beginning-position) pos (line-end-position))

原来有这两个函数,学习了

<=原来支持两个以上参数啊, 挺方便

从 Emacs 24.4 开始支持

1 个赞