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

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

[nongnu] elpa/git-commit 543efd16e7 1/2: Ignore magit-buffer-topdir when


From: ELPA Syncer
Subject: [nongnu] elpa/git-commit 543efd16e7 1/2: Ignore magit-buffer-topdir when preparing another buffer
Date: Sun, 19 Mar 2023 19:01:17 -0400 (EDT)

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

    Ignore magit-buffer-topdir when preparing another buffer
    
    Since [1: 623d335b4d] we set `magit-buffer-topdir' and use that in
    `magit-toplevel', but when we determine and create a buffer that
    concerns another buffer, then that value does not apply.
    
    Without this, visiting a module from the status buffer of the
    super-repository, resulted in the super-repositories buffer being
    reused to display the module's status, which then caused many
    commands to fail when invoked in that directory.
    
    1: 2023-03-17 623d335b4dddc64f205748862520ed41661a7a80
       Memorize gitdir and topdir for each Magit buffer
---
 lisp/magit-git.el  | 7 +++++--
 lisp/magit-mode.el | 4 ++--
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/lisp/magit-git.el b/lisp/magit-git.el
index afeceb9935..bedb121422 100644
--- a/lisp/magit-git.el
+++ b/lisp/magit-git.el
@@ -970,8 +970,11 @@ returning the truename."
                  ;; working tree.
                  (file-name-directory (directory-file-name gitdir))))))))))))
 
-(defun magit--toplevel-safe ()
-  (or (magit-toplevel)
+(defun magit--toplevel-safe (&optional nocache)
+  (or (if nocache
+          (let ((magit-buffer-topdir nil))
+            (magit-toplevel))
+        (magit-toplevel))
       (magit--not-inside-repository-error)))
 
 (defmacro magit-with-toplevel (&rest body)
diff --git a/lisp/magit-mode.el b/lisp/magit-mode.el
index 98daf538cf..77b5286562 100644
--- a/lisp/magit-mode.el
+++ b/lisp/magit-mode.el
@@ -801,7 +801,7 @@ 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."
-  (let ((topdir (magit--toplevel-safe)))
+  (let ((topdir (magit--toplevel-safe 'nocache)))
     (cl-flet* ((b (buffer)
                  (with-current-buffer buffer
                    (and (eq major-mode mode)
@@ -823,7 +823,7 @@ If a frame, then only consider buffers on that frame."
         ((guard (framep frame)) (seq-some #'w (window-list frame)))))))
 
 (defun magit-generate-new-buffer (mode &optional value directory)
-  (let* ((default-directory (or directory (magit--toplevel-safe)))
+  (let* ((default-directory (or directory (magit--toplevel-safe 'nocache)))
          (name (funcall magit-generate-buffer-name-function mode value))
          (buffer (generate-new-buffer name)))
     (with-current-buffer buffer



reply via email to

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