diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2023-03-29 10:13:29 -0700 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2023-03-29 12:53:42 -0700 |
commit | 4c4de025e45f2a43806436ece0f8193ada48f6fb (patch) | |
tree | 79099b7acd429daa9d134476ce8ed4c6c4768519 | |
parent | 65b47b93e72c2b1aa12d950242a7d5ea6c8a5d56 (diff) | |
download | dotfiles-4c4de025e45f2a43806436ece0f8193ada48f6fb.tar.gz |
factor out spw/display-buffer-pop-up-or-same-window
-rw-r--r-- | .emacs.d/init.el | 20 |
1 files 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 |