emacs: refine Magit display-buffer-alist with prot-window-display-new

This commit is contained in:
Protesilaos 2026-07-14 15:11:15 +03:00
parent 6d6dc50588
commit e14bfda473
No known key found for this signature in database
GPG key ID: 99BD6459CD5CA3EA
3 changed files with 20 additions and 2 deletions

View file

@ -143,7 +143,8 @@
(display-buffer-reuse-mode-window display-buffer-same-window))
((or . ((derived-mode . magit-diff-mode)
(derived-mode . magit-log-mode)))
(prot-window-display-other-or-current))
(display-buffer-reuse-mode-window prot-window-display-new display-buffer-pop-up-window)
(inhibit-switch-frame . t))
;; other `tab-bar-mode' tab
((derived-mode . magit-status-mode)
(display-buffer-reuse-mode-window display-buffer-in-tab)

View file

@ -6704,7 +6704,8 @@ to a certain height.
(display-buffer-reuse-mode-window display-buffer-same-window))
((or . ((derived-mode . magit-diff-mode)
(derived-mode . magit-log-mode)))
(prot-window-display-other-or-current))
(display-buffer-reuse-mode-window prot-window-display-new display-buffer-pop-up-window)
(inhibit-switch-frame . t))
;; other `tab-bar-mode' tab
((derived-mode . magit-status-mode)
(display-buffer-reuse-mode-window display-buffer-in-tab)
@ -19208,6 +19209,14 @@ This as the action function in a `display-buffer-alist' entry."
(when (apply fn args)
(throw 'success fn))))))
(defun prot-window-display-new (buffer alist)
"Display buffer in a new window if possible."
(when-let* ((root (frame-root-window))
(window (ignore-errors
(or (split-window-horizontally nil root)
(split-window-below nil root)))))
(window--display-buffer buffer window 'window alist)))
(defun prot-window-display-other-or-current (&rest args)
"Display buffer in the current or other window.
Use the other window if only one window is present."

View file

@ -96,6 +96,14 @@ This as the action function in a `display-buffer-alist' entry."
(when (apply fn args)
(throw 'success fn))))))
(defun prot-window-display-new (buffer alist)
"Display buffer in a new window if possible."
(when-let* ((root (frame-root-window))
(window (ignore-errors
(or (split-window-horizontally nil root)
(split-window-below nil root)))))
(window--display-buffer buffer window 'window alist)))
(defun prot-window-display-other-or-current (&rest args)
"Display buffer in the current or other window.
Use the other window if only one window is present."