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."