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

    magit-find-file--restore-position: Spin out new function
---
 lisp/magit-files.el | 51 +++++++++++++++++++++++++++------------------------
 1 file changed, 27 insertions(+), 24 deletions(-)

diff --git a/lisp/magit-files.el b/lisp/magit-files.el
index ea646e4290c..c9c164d3af0 100644
--- a/lisp/magit-files.el
+++ b/lisp/magit-files.el
@@ -84,30 +84,10 @@ the line and column corresponding to that location."
             (magit-read-file-from-rev (if (member rev pseudo-revs) "HEAD" rev)
                                       prompt)))))
 
-(defun magit-find-file--internal (rev file fn)
-  (let ((buf (magit-find-file-noselect rev file))
-        line col)
-    (when-let ((visited-file (magit-file-relative-name)))
-      (setq line (line-number-at-pos))
-      (setq col (current-column))
-      (cond
-        ((not (equal visited-file file)))
-        ((equal magit-buffer-revision rev))
-        ((equal rev "{worktree}")
-         (setq line (magit-diff-visit--offset file magit-buffer-revision 
line)))
-        ((equal rev "{index}")
-         (setq line (magit-diff-visit--offset file nil line)))
-        (magit-buffer-revision
-         (setq line (magit-diff-visit--offset
-                     file (concat magit-buffer-revision ".." rev) line)))
-        ((setq line (magit-diff-visit--offset file (list "-R" rev) line)))))
-    (funcall fn buf)
-    (when line
-      (with-current-buffer buf
-        (widen)
-        (goto-char (point-min))
-        (forward-line (1- line))
-        (move-to-column col)))
+(defun magit-find-file--internal (rev file display)
+  (let ((buf (magit-find-file-noselect rev file)))
+    (magit-find-file--restore-position buf rev file)
+    (funcall display buf)
     buf))
 
 (defun magit-find-file-noselect (rev file)
@@ -177,6 +157,29 @@ 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 (line col)
+    (when-let ((visited-file (magit-file-relative-name)))
+      (setq line (line-number-at-pos))
+      (setq col (current-column))
+      (cond
+        ((not (equal visited-file file)))
+        ((equal magit-buffer-revision rev))
+        ((equal rev "{worktree}")
+         (setq line (magit-diff-visit--offset file magit-buffer-revision 
line)))
+        ((equal rev "{index}")
+         (setq line (magit-diff-visit--offset file nil line)))
+        (magit-buffer-revision
+         (setq line (magit-diff-visit--offset
+                     file (concat magit-buffer-revision ".." rev) line)))
+        ((setq line (magit-diff-visit--offset file (list "-R" rev) line)))))
+    (when line
+      (with-current-buffer buf
+        (widen)
+        (goto-char (point-min))
+        (forward-line (1- line))
+        (move-to-column col)))))
+
 (define-advice lsp (:around (fn &rest args) magit-find-file)
   "Do nothing when visiting blob using `magit-find-file' and similar.
 See also https://github.com/doomemacs/doomemacs/pull/6309.";

Reply via email to