   "Internal function for `shackle-display-buffer'.
 Displays BUFFER according to ALIST and PLIST."
   (cond
+   ((plist-get plist :custom)
+    (funcall (plist-get plist :custom) buffer alist plist))
    ((plist-get plist :ignore) 'fail)
    ((shackle--display-buffer-reuse buffer alist))
    ((or (plist-get plist :same)

it to do useful things such as selecting the popped up window
afterwards and/or inhibiting `quit-window' from deleting the
window."
  (let ((window (shackle--display-buffer buffer alist plist)))
    (when (plist-get plist :inhibit-window-quit)
      (shackle--inhibit-window-quit window))
    (when (and (plist-get plist :select) (window-live-p window))
      (select-window window t))
    window))

;;;###autoload
(define-minor-mode shackle-mode
  "Toggle `shackle-mode'.
This global minor mode allows you to easily set up rules for
popups in Emacs."
  :lighter shackle-lighter
  :global t
  (if shackle-mode
      (setq display-buffer-alist


:regexp and t

As a special case, a list of the (:custom function) form
will call the supplied predicate with the buffer to be displayed
as value and be interpreted as a match for a non-nil return value.

A default rule can be set up with `shackle-default-rule'.
To make an exception to `shackle-default-rule', use the condition
you want to exclude and either not use the key in question, use a
