branch: elpa/magit
commit 9430c222e0b364748a5f7eeaa5c4afb4777f6e23
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>
magit-buffer-{file-name,revision}: New functions
---
lisp/magit-extras.el | 5 +----
lisp/magit-files.el | 3 +--
lisp/magit-git.el | 4 ++--
lisp/magit-mode.el | 17 ++++++++++++++++-
4 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/lisp/magit-extras.el b/lisp/magit-extras.el
index c34c0cfa725..74ffc2a5e41 100644
--- a/lisp/magit-extras.el
+++ b/lisp/magit-extras.el
@@ -332,10 +332,7 @@ a position in a file-visiting buffer."
(prompt-for-change-log-name)))
(pcase-let ((`(,buf ,pos) (magit-diff-visit-file--noselect)))
(magit--with-temp-position buf pos
- (let ((add-log-buffer-file-name-function
- (lambda ()
- (or magit-buffer-file-name
- (buffer-file-name)))))
+ (let ((add-log-buffer-file-name-function #'magit-buffer-file-name))
(add-change-log-entry whoami file-name other-window)))))
;;;###autoload
diff --git a/lisp/magit-files.el b/lisp/magit-files.el
index f1d3f63154e..12830352a00 100644
--- a/lisp/magit-files.el
+++ b/lisp/magit-files.el
@@ -392,8 +392,7 @@ in a single window."
(defun magit-blob-previous ()
"Visit the previous blob which modified the current file."
(interactive)
- (if-let ((file (or magit-buffer-file-name
- (buffer-file-name (buffer-base-buffer)))))
+ (if-let ((file (magit-buffer-file-name)))
(if-let ((ancestor (magit-blob-ancestor magit-buffer-revision file)))
(magit-blob-visit ancestor)
(user-error "You have reached the beginning of time"))
diff --git a/lisp/magit-git.el b/lisp/magit-git.el
index 4896b72537e..bc7519dd9ac 100644
--- a/lisp/magit-git.el
+++ b/lisp/magit-git.el
@@ -38,6 +38,7 @@
(declare-function magit-maybe-make-margin-overlay "magit-margin" ())
;; From `magit-mode'.
+(declare-function magit-buffer-file-name "magit-mode" ())
(declare-function magit-get-mode-buffer "magit-mode"
(mode &optional value frame))
(declare-function magit-refresh "magit-mode" ())
@@ -1041,8 +1042,7 @@ If TRACKED is non-nil, return the path only if it matches
a
tracked file."
(with-current-buffer (or (buffer-base-buffer) (current-buffer))
(and-let* ((file (or file
- magit-buffer-file-name
- buffer-file-name
+ (magit-buffer-file-name)
(and (derived-mode-p 'dired-mode)
default-directory)))
(_(or (not tracked)
diff --git a/lisp/magit-mode.el b/lisp/magit-mode.el
index d7b189d8597..bf7c741a71b 100644
--- a/lisp/magit-mode.el
+++ b/lisp/magit-mode.el
@@ -615,6 +615,21 @@ Magit is documented in info node `(magit)'."
;; function does not reinstate this.
(put 'magit-buffer-diff-files-suspended 'permanent-local t)
+(defun magit-buffer-file-name ()
+ "Return `magit-buffer-file-name' or if that is nil `buffer-file-name'.
+In an indirect buffer get get the value for its base buffer."
+ (or magit-buffer-file-name
+ (buffer-file-name (buffer-base-buffer))))
+
+(defun magit-buffer-revision ()
+ "Return `magit-buffer-revision' or if that is nil \"{worktree}\".
+If not visiting a blob or file, or the file isn't being tracked,
+return nil."
+ (or magit-buffer-revision
+ (and buffer-file-name
+ (magit-file-tracked-p buffer-file-name)
+ "{worktree}")))
+
(cl-defgeneric magit-buffer-value ()
"Return the value of the current buffer.
The \"value\" identifies what is being displayed in the buffer.
@@ -1580,7 +1595,7 @@ The additional output can be found in the *Messages*
buffer."
The returned value has the form (BEGINNING-LINE END-LINE). If
the region end at the beginning of a line, do not include that
line. Avoid including the line after the end of the file."
- (and (or magit-buffer-file-name buffer-file-name)
+ (and (magit-buffer-file-name)
(region-active-p)
(not (= (region-beginning) (region-end) (1+ (buffer-size))))
(let ((beg (region-beginning))