emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/git-commit 67352a64b5 11/12: magit--toplevel-safe: New fun


From: ELPA Syncer
Subject: [nongnu] elpa/git-commit 67352a64b5 11/12: magit--toplevel-safe: New function
Date: Fri, 13 May 2022 10:58:11 -0400 (EDT)

branch: elpa/git-commit
commit 67352a64b555a99e77fba8651487fa6449c88078
Author: Jonas Bernoulli <jonas@bernoul.li>
Commit: Jonas Bernoulli <jonas@bernoul.li>

    magit--toplevel-safe: New function
---
 lisp/magit-git.el  | 12 +++++-----
 lisp/magit-mode.el | 66 ++++++++++++++++++++++++++----------------------------
 2 files changed, 38 insertions(+), 40 deletions(-)

diff --git a/lisp/magit-git.el b/lisp/magit-git.el
index 341167f3d1..bd1fee84d3 100644
--- a/lisp/magit-git.el
+++ b/lisp/magit-git.el
@@ -918,14 +918,14 @@ returning the truename."
                 ;; Step outside the control directory to enter the working 
tree.
                 (file-name-directory (directory-file-name gitdir)))))))))))
 
+(defun magit--toplevel-safe ()
+  (or (magit-toplevel)
+      (magit--not-inside-repository-error)))
+
 (defmacro magit-with-toplevel (&rest body)
   (declare (indent defun) (debug (body)))
-  (let ((toplevel (cl-gensym "toplevel")))
-    `(let ((,toplevel (magit-toplevel)))
-       (if ,toplevel
-           (let ((default-directory ,toplevel))
-             ,@body)
-         (magit--not-inside-repository-error)))))
+  `(let ((default-directory (magit--toplevel-safe)))
+     ,@body))
 
 (define-error 'magit-outside-git-repo "Not inside Git repository")
 (define-error 'magit-corrupt-git-config "Corrupt Git configuration")
diff --git a/lisp/magit-mode.el b/lisp/magit-mode.el
index 7956e8565a..4cefd402de 100644
--- a/lisp/magit-mode.el
+++ b/lisp/magit-mode.el
@@ -849,45 +849,43 @@ If `visible', then only consider buffers on all visible 
frames.
 If `selected' or t, then only consider buffers on the selected
   frame.
 If a frame, then only consider buffers on that frame."
-  (if-let ((topdir (magit-toplevel)))
-      (cl-flet* ((b (buffer)
-                   (with-current-buffer buffer
-                     (and (eq major-mode mode)
-                          (equal magit--default-directory topdir)
-                          (if value
-                              (and magit-buffer-locked-p
-                                   (equal (magit-buffer-value) value))
-                            (not magit-buffer-locked-p))
-                          buffer)))
-                 (w (window)
-                   (b (window-buffer window)))
-                 (f (frame)
-                   (seq-some #'w (window-list frame 'no-minibuf))))
-        (pcase-exhaustive frame
-          ('nil                   (seq-some #'b (buffer-list)))
-          ('all                   (seq-some #'f (frame-list)))
-          ('visible               (seq-some #'f (visible-frame-list)))
-          ((or 'selected 't)      (seq-some #'w (window-list 
(selected-frame))))
-          ((guard (framep frame)) (seq-some #'w (window-list frame)))))
-    (magit--not-inside-repository-error)))
+  (let ((topdir (magit--toplevel-safe)))
+    (cl-flet* ((b (buffer)
+                 (with-current-buffer buffer
+                   (and (eq major-mode mode)
+                        (equal magit--default-directory topdir)
+                        (if value
+                            (and magit-buffer-locked-p
+                                 (equal (magit-buffer-value) value))
+                          (not magit-buffer-locked-p))
+                        buffer)))
+               (w (window)
+                 (b (window-buffer window)))
+               (f (frame)
+                 (seq-some #'w (window-list frame 'no-minibuf))))
+      (pcase-exhaustive frame
+        ('nil                   (seq-some #'b (buffer-list)))
+        ('all                   (seq-some #'f (frame-list)))
+        ('visible               (seq-some #'f (visible-frame-list)))
+        ((or 'selected 't)      (seq-some #'w (window-list (selected-frame))))
+        ((guard (framep frame)) (seq-some #'w (window-list frame)))))))
 
 (defun magit-mode-get-buffer (mode &optional create frame value)
   (declare (obsolete magit-get-mode-buffer "Magit 3.0.0"))
   (when create
     (error "`magit-mode-get-buffer's CREATE argument is obsolete"))
-  (if-let ((topdir (magit-toplevel)))
-      (--first (with-current-buffer it
-                 (and (eq major-mode mode)
-                      (equal magit--default-directory topdir)
-                      (if value
-                          (and magit-buffer-locked-p
-                               (equal (magit-buffer-value) value))
-                        (not magit-buffer-locked-p))))
-               (if frame
-                   (mapcar #'window-buffer
-                           (window-list (unless (eq frame t) frame)))
-                 (buffer-list)))
-    (magit--not-inside-repository-error)))
+  (let ((topdir (magit--toplevel-safe)))
+    (--first (with-current-buffer it
+               (and (eq major-mode mode)
+                    (equal magit--default-directory topdir)
+                    (if value
+                        (and magit-buffer-locked-p
+                             (equal (magit-buffer-value) value))
+                      (not magit-buffer-locked-p))))
+             (if frame
+                 (mapcar #'window-buffer
+                         (window-list (unless (eq frame t) frame)))
+               (buffer-list)))))
 
 (defun magit-generate-new-buffer (mode &optional value)
   (let* ((name (funcall magit-generate-buffer-name-function mode value))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]