branch: elpa/git-commit commit b6b625134729ec52413cd126b4a76645f3279c28 Author: Jonas Bernoulli <jo...@bernoul.li> Commit: Jonas Bernoulli <jo...@bernoul.li>
magit-refresh-get-relative-position: Don't use count-lines This function does not reliably return the number of lines between two positions. It returns either that, or that plus one; which is of course completely bonkers. Closes #4148. --- Documentation/RelNotes/3.3.0.org | 3 +++ lisp/magit-mode.el | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Documentation/RelNotes/3.3.0.org b/Documentation/RelNotes/3.3.0.org index 9f7b760..2b30741 100644 --- a/Documentation/RelNotes/3.3.0.org +++ b/Documentation/RelNotes/3.3.0.org @@ -33,3 +33,6 @@ a terminal. If this change does not have any effect for you then your theme probably changes these faces and should stop doing so. #4206 + +- In some cases refreshing a buffer caused the cursor to jump to a + different position. #4148 diff --git a/lisp/magit-mode.el b/lisp/magit-mode.el index 4d8e12b..8d50b04 100644 --- a/lisp/magit-mode.el +++ b/lisp/magit-mode.el @@ -1118,7 +1118,8 @@ Run hooks `magit-pre-refresh-hook' and `magit-post-refresh-hook'." (defun magit-refresh-get-relative-position () (when-let ((section (magit-current-section))) (let ((start (oref section start))) - (list (count-lines start (point)) + (list (- (line-number-at-pos (point)) + (line-number-at-pos start)) (- (point) (line-beginning-position)) (and (magit-hunk-section-p section) (region-active-p)