[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