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))

Reply via email to