branch: elpa/magit
commit cf84935a7471356e60c30855701ac99e4c953433
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>

    Restore position after reverting blob buffer
---
 lisp/magit-files.el | 25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/lisp/magit-files.el b/lisp/magit-files.el
index b1ead4547e4..814281e4781 100644
--- a/lisp/magit-files.el
+++ b/lisp/magit-files.el
@@ -130,7 +130,17 @@ REV is a revision or one of \"{worktree}\" or \"{index}\"."
            (format "%s.~%s~" file (subst-char-in-string ?/ ?_ rev))))
 
 (defun magit--revert-blob-buffer (_ignore-auto _noconfirm)
-  (magit--refresh-blob-buffer t))
+  (let ((old-rev-oid magit-buffer-revision-oid)
+        (line (line-number-at-pos))
+        (col (current-column)))
+    (setq magit-buffer-blob-oid (magit-blob-oid magit-buffer-revision
+                                                magit-buffer-file-name))
+    (setq magit-buffer-revision-oid (magit-commit-oid magit-buffer-revision))
+    (magit--refresh-blob-buffer t)
+    (magit-find-file--restore-position (current-buffer)
+                                       magit-buffer-revision-oid
+                                       (magit-file-relative-name)
+                                       old-rev-oid line col)))
 
 (defun magit--refresh-blob-buffer (&optional force)
   (let ((old-blob-oid magit-buffer-blob-oid))
@@ -163,12 +173,13 @@ REV is a revision or one of \"{worktree}\" or 
\"{index}\"."
     (set-buffer-modified-p nil)
     (run-hooks 'magit-find-blob-hook)))
 
-(defun magit-find-file--restore-position (buf rev file)
-  (let ((rev-oid magit-buffer-revision-oid)
-        line col)
-    (when-let ((visited-file (magit-file-relative-name)))
-      (setq line (line-number-at-pos))
-      (setq col (current-column))
+(defun magit-find-file--restore-position ( buf rev file
+                                           &optional old-rev-oid line col)
+  (when-let ((visited-file (magit-file-relative-name)))
+    (let ((rev-oid (or old-rev-oid magit-buffer-revision-oid)))
+      (unless line
+        (setq line (line-number-at-pos))
+        (setq col (current-column)))
       (cond
         ((not (equal visited-file file)))
         ((magit-rev-eq rev-oid rev))

Reply via email to