2

Currently I'm using the following display-buffer-alist, which works fine but resets the size on opening a new window.

Is there a way to only use the window-height when first creating the window? After this, any resizing I do should be kept instead of being reset (when viewing another commit in this example).

(push
 (list
  "\\`magit-revision: "
  (list 'display-buffer-reuse-window 'display-buffer-below-selected)
  (cons 'window-height    0.8)
  (cons 'reusable-frames 'visible))
 display-buffer-alist)
2
  • 3
    I don't know if there is a simple setting, but the display-buffer-alist accepts custom functions that can do whatever the heart desires: (add-to-list 'display-buffer-alist '("REGEXP" . (my-custom-function))) The custom function takes two arguments: BUFFER ALIST.
    – lawlist
    Oct 25 '21 at 22:01
  • Thanks, I managed to use this to get the desired result (posted in answer).
    – ideasman42
    Oct 26 '21 at 3:52
2

This can be done by wrapping display-buffer-reuse-window' to filter out the window-height from the alist, so it's only used for other functions (in this case display-buffer-below-selected').

(defun my-display-buffer-reuse-window-without-size (buffer alist)
  "Wrap `display-buffer-reuse-window' ignoring window-height."
  (let *((skip-params (list 'window-height 'window-width 'window-min-height))
         (alist-filter
          (delete nil (mapcar (lambda (x)
                                (if (and (consp x) (memq (car x) skip-params))
                                    nil
                                  x))
                              alist))))
       (display-buffer-reuse-window buffer alist-filter)))

(push (list "\\`magit-revision: "
            (list 'my-display-buffer-reuse-window-without-height
                  'display-buffer-below-selected)
            (cons 'reusable-frames 'visible)
            (cons 'window-height 0.9))
      display-buffer-alist)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.