From 4c4de025e45f2a43806436ece0f8193ada48f6fb Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Wed, 29 Mar 2023 10:13:29 -0700 Subject: factor out spw/display-buffer-pop-up-or-same-window --- .emacs.d/init.el | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/.emacs.d/init.el b/.emacs.d/init.el index 0731dc7c..93fdc6a8 100644 --- a/.emacs.d/init.el +++ b/.emacs.d/init.el @@ -1455,6 +1455,12 @@ don't consider windows satisfying the predicate EXCLUDE." (([?\C-x left] . spw/cycle-from-here) ([?\C-x right] . spw/cycle-from-here))) +(defun spw/display-buffer-pop-up-or-same-window (buffer alist) + (if (eq (window-buffer (selected-window)) buffer) + (display-buffer-same-window buffer alist) + (display-buffer-pop-up-window buffer (cl-acons 'inhibit-same-window t + alist)))) + (setq display-buffer-alist `(;; This is meant to say: for these buffers which, unusually, do not ;; benefit from being as tall as possible, always display them in the @@ -1481,18 +1487,8 @@ don't consider windows satisfying the predicate EXCLUDE." (preserve-size . (nil . t)) (inhibit-same-window . t)) - ;; We want `inhibit-same-window' t except when popping to a buffer - ;; that's already selected, e.g. hitting 'g' in a *vc-diff* buffer. - ,@(and (fboundp 'buffer-match-p) ; for Emacs 27 - (let ((re "^\\*vc\\(?:-reflog\\)?-diff\\*")) - `((,(lambda (buffer _action) - (and (buffer-match-p re buffer) - (eq buffer (window-buffer (selected-window))))) - display-buffer-same-window) - - (,re - display-buffer-pop-up-window - (inhibit-same-window . t))))) + ("^\\*vc\\(?:-reflog\\)?-diff\\*" + spw/display-buffer-pop-up-or-same-window) ;; These SLIME windows don't benefit from a lot of height and it is ;; useful to have them be independent of the main two windows -- cgit v1.2.3