branch: elpa/magit
commit e211a781357f7b3c31416bfcec62a3fb19f15748
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>
magit-toggle-buffer-lock: Uniquify buffer name if necessary
A temporary throwaway buffer is necessary because
`uniquify-rationalize-file-buffer-names' excludes the current
buffer from the list of buffers whose name it might modify.
Closes #5330.
---
lisp/magit-mode.el | 42 +++++++++++++++++++++++++++---------------
1 file changed, 27 insertions(+), 15 deletions(-)
diff --git a/lisp/magit-mode.el b/lisp/magit-mode.el
index 5303ad6f298..2e8ca78b24c 100644
--- a/lisp/magit-mode.el
+++ b/lisp/magit-mode.el
@@ -889,17 +889,7 @@ If a frame, then only consider buffers on that frame."
(setq magit--default-directory default-directory)
(setq magit-buffer-locked-p (and value t))
(magit-restore-section-visibility-cache mode))
- (when magit-uniquify-buffer-names
- (cl-pushnew mode uniquify-list-buffers-directory-modes)
- (with-current-buffer buffer
- (setq list-buffers-directory (abbreviate-file-name default-directory)))
- (let ((uniquify-buffer-name-style
- (if (memq uniquify-buffer-name-style '(nil forward))
- 'post-forward-angle-brackets
- uniquify-buffer-name-style)))
- (uniquify-rationalize-file-buffer-names
- name (file-name-directory (directory-file-name default-directory))
- buffer)))
+ (magit--maybe-uniquify-buffer-names buffer name mode)
buffer))
(defun magit-generate-buffer-name-default-function (mode &optional value)
@@ -922,6 +912,19 @@ account."
(?t . ,n)
(?x . ,(if magit-uniquify-buffer-names "" "*"))))))
+(defun magit--maybe-uniquify-buffer-names (buffer name mode)
+ (when magit-uniquify-buffer-names
+ (cl-pushnew mode uniquify-list-buffers-directory-modes)
+ (with-current-buffer buffer
+ (setq list-buffers-directory (abbreviate-file-name default-directory)))
+ (let ((uniquify-buffer-name-style
+ (if (memq uniquify-buffer-name-style '(nil forward))
+ 'post-forward-angle-brackets
+ uniquify-buffer-name-style)))
+ (uniquify-rationalize-file-buffer-names
+ name (file-name-directory (directory-file-name default-directory))
+ buffer))))
+
;;; Buffer Lock
(defun magit-toggle-buffer-lock ()
@@ -947,16 +950,25 @@ latter is displayed in its place."
(switch-to-buffer unlocked nil t)
(kill-buffer locked))
(setq magit-buffer-locked-p nil)
- (rename-buffer (funcall magit-generate-buffer-name-function
- major-mode)))
+ (let ((name (funcall magit-generate-buffer-name-function major-mode))
+ (buffer (current-buffer))
+ (mode major-mode))
+ (rename-buffer (generate-new-buffer-name name))
+ (with-temp-buffer
+ (magit--maybe-uniquify-buffer-names buffer name mode))))
(if-let ((value (magit-buffer-value)))
(if-let ((locked (magit-get-mode-buffer major-mode value)))
(let ((unlocked (current-buffer)))
(switch-to-buffer locked nil t)
(kill-buffer unlocked))
(setq magit-buffer-locked-p t)
- (rename-buffer (funcall magit-generate-buffer-name-function
- major-mode value)))
+ (let ((name (funcall magit-generate-buffer-name-function
+ major-mode value))
+ (buffer (current-buffer))
+ (mode major-mode))
+ (rename-buffer (generate-new-buffer-name name))
+ (with-temp-buffer
+ (magit--maybe-uniquify-buffer-names buffer name mode))))
(user-error "Buffer has no value it could be locked to"))))
;;; Bury Buffer