Subject: bug#24828: 26.0.50; Renaming of display-buffer-in-major-side-window broke which-key.el

From: martin rudalics <[email-masked]>
Date: Mon, 31 Oct 2016 08:42:35 +0100

> I wasn't aware that that function was internal, since it appears to
 > function like the other display-buffer actions.

Unfortunately so.  It was my fault to pretend otherwise.

 > If I remember right that
 > code was written by a contributor, and I don't remember the motivation for
 > choosing that one. If it really is internal then I will investigate
 > changing to the proper method when I have some more time.

I see.  The problem is that the structure on the right

     ;; +-------------------------+         +-------------------------+
     ;; |     regular window      |         |     regular window      |
     ;; |                         |         +------------+------------+
     ;; +------------+------------+   -->   | side-win 1 | side-win 2 |
     ;; | side-win 1 | side-win 2 |         |------------+------------|
     ;; |            |            |         |     which-key window    |
     ;; +------------+------------+         +------------+------------+

was never really supported.  I initially wanted to allow that but later
found out that I cannot reliably split side windows in both directions.
It might work with Emacs 24 in a few basic use cases but will surely
break with more complicated setups.  So you essentially will have to
fall back on

     ;; +-------------------------+
     ;; |     regular window      |
     ;; |                         |
     ;; +------+-------+----------|
     ;; | side-| side- | which-key|
     ;; | win-1| win-2 | window   |
     ;; +------+-------+----------+

or

     ;; +-------------------------+
     ;; |     regular window      |
     ;; |                         |
     ;; +----------- +------------|
     ;; | side-win-1 | which-key  |
     ;; |            | window     |
     ;; +------------+------------+

sooner or later anyway.  For this, ‘which-key’ should either supply a
side window slot value for customization and/or tell the user how to
customize ‘display-buffer-alist’ for displaying the which-key window.
Then the user can decide which windows she wants which-key to share with
(the completions window looks like a good candidate because it's
ephemeral too).

Note that side windows were initially designed as more persistent but I
can easily see that the ‘which-key’ use case might come in pretty handy
too.  Hence it should be possible to make the side-win-1 and side-win-2
windows temporarily very small in order to give the which-key window
sufficient space.

 From what I've seen, ‘which-key’ is a fine mode, very neatly written.
It should be in ELPA.  In any case, keep up the good work.

martin