summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2023-03-29 10:13:29 -0700
committerSean Whitton <spwhitton@spwhitton.name>2023-03-29 12:53:42 -0700
commit4c4de025e45f2a43806436ece0f8193ada48f6fb (patch)
tree79099b7acd429daa9d134476ce8ed4c6c4768519
parent65b47b93e72c2b1aa12d950242a7d5ea6c8a5d56 (diff)
downloaddotfiles-4c4de025e45f2a43806436ece0f8193ada48f6fb.tar.gz
factor out spw/display-buffer-pop-up-or-same-window
-rw-r--r--.emacs.d/init.el20
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