]> jturnerusa.dev Git - emacs.d/commitdiff
created display-buffer-in-side-window wrapper function
authorJohn Turner <jturner.usa@gmail.com>
Fri, 7 Oct 2022 06:13:54 +0000 (02:13 -0400)
committerJohn Turner <jturner.usa@gmail.com>
Fri, 7 Oct 2022 06:13:54 +0000 (02:13 -0400)
The old display-buffer-alist thing did not work like I expected it to,
so we removed it.

Instead of trying to update display-buffer-alist
when the screen resizes via a hook, we just create our own display function that
can be used in display-buffer-alist directly. The function takes a
"which-side" property in the alist, the property holds a function that returns
which side the new buffer will snap to when invoked. The display
function then creates a new alist with the side property and any other
properties were passed in, and calls display-buffer-in-side-window
with the new alist.

This allows us to use this function as if it were
display-buffer-in-side-window, but with an extra property to decide
which side the window snaps to each time the function is invoked. This
is useful if you want side windows to snap to different parts of the
screen based on the current size of the frame, or anything else.

config/display-buffer/config-display-buffer-alist.el [deleted file]
config/display-buffer/config-display-buffer-best-side.el [new file with mode: 0644]
config/display-buffer/config-display-buffer.el
config/flycheck/config-flycheck.el
config/flymake/config-flymake.el

diff --git a/config/display-buffer/config-display-buffer-alist.el b/config/display-buffer/config-display-buffer-alist.el
deleted file mode 100644 (file)
index e64f109..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-(defvar config-display-buffer-gaps-width 20)
-
-(defun config-display-buffer-which-side ()
-  (if (> (+ (frame-pixel-width) config-display-buffer-gaps-width) (/ (x-display-pixel-width) 2))
-      'right
-    'bottom))
diff --git a/config/display-buffer/config-display-buffer-best-side.el b/config/display-buffer/config-display-buffer-best-side.el
new file mode 100644 (file)
index 0000000..9a2ff48
--- /dev/null
@@ -0,0 +1,7 @@
+(defun config-display-buffer-frame-wide-p ()
+  (> (frame-pixel-width) (/ (x-display-pixel-width) 2)))
+
+(defun config-display-buffer-best-side (buffer alist)
+  (let* ((side (funcall (alist-get 'which-side alist)))
+         (alist (append (cdr alist) (list (cons 'side side)))))
+    (display-buffer-in-side-window buffer alist)))
index c36d35ffa5b8fa889d5c57c39563760d5d426c62..022b1df714eb28f3f4fb58b337a0da08c5f6015e 100644 (file)
@@ -1,5 +1,5 @@
 (setq display-buffer-base-action '(display-buffer-same-window display-buffer-reuse-window))
 
-(load "config-display-buffer-alist")
+(load "config-display-buffer-best-side")
 
 (provide 'config-display-buffer)
index 0c1ae1b445fa2bb67acb727b8be648012b9fa6a9..95c0b49208d56b1684fcb7309f11505c66cd796f 100644 (file)
@@ -5,9 +5,11 @@
 (add-hook 'flycheck-error-list-mode-hook (lambda () (visual-line-mode 1)))
 
 (add-to-list 'display-buffer-alist '("\\*Flycheck errors.*"
-                                     (display-buffer-in-side-window)
-                                     (side . (config-display-buffer-which-side))
-                                     (window-height . 15)
-                                     (window-width . 75)))
+                                     (config-display-buffer-best-side)
+                                     (which-side . (lambda ()
+                                                     (if (config-display-buffer-frame-wide-p)
+                                                         'right
+                                                       'bottom)))))
+
 
 (provide 'config-flycheck)
index c691bee2f7f10cd9e0f781b787b146de205110fd..c9a3dfe60f55eac648cfe7872628e01538d959d3 100644 (file)
@@ -3,9 +3,10 @@
 (load "config-flymake-hooks")
 
 (add-to-list 'display-buffer-alist '("\\*Flymake diagnostics.*"
-                                     (display-buffer-in-side-window)
-                                     (side . (config-display-buffer-which-side))
-                                     (window-height . 15)
-                                     (window-width . 75)))
+                                     (config-display-buffer-best-side)
+                                     (which-side . (lambda ()
+                                                     (if (config-display-buffer-frame-wide-p)
+                                                         'right
+                                                       'bottom)))))
 
 (provide 'config-flymake)