all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: martin rudalics <rudalics@gmx.at>
To: Chong Yidong <cyd@stupidchicken.com>
Cc: emacs-devel@gnu.org
Subject: Re: display-buffer-alist simplifications
Date: Sun, 24 Jul 2011 12:07:14 +0200	[thread overview]
Message-ID: <4E2BEED2.5040608@gmx.at> (raw)
In-Reply-To: <87wrf8iyse.fsf@stupidchicken.com>

 > This is not important.  If this is an issue, it would be cleaner to use
 > global variables to specify defaults.

FWIW, that's the Emacs 23 way of handling this.  The global variables
are `pop-up-windows' or `split-height-threshold' and to override them
you can use `special-display-regexps' with a user defined function.  The
problem with such an approach is that you have to explain precedence in
the doc-strings like that from `special-display-regexps' saying

   If this variable appears \"not to work\", because you added a
   name to it but the corresponding buffer is displayed in the
   selected window, look at the values of `same-window-buffer-names'
   and `same-window-regexps'.  Those variables take precedence over
   this one.

or leave things completely unexplained as for `pop-up-windows'

   Non-nil means `display-buffer' should make a new window.

failing to mention that this is overridden by practically all other
options.

Not to mention that global options inevitably provoked two developments:
Applications overriding them in all sorts of ways and users asking for
adding more and more options like `display-buffer-reuse-frames' -
apparently a workaround for Emacs' inability to raise frames with some
window managers - or `split-window-preferred-function' with people
asking over and over again how to turn off horizontal splitting.

 > IIUC, the current system also has a limitation: there is no way to use
 > display-buffer-alist to tell Emacs to apply even-sizes selectively,
 > e.g. only when reusing a window already containing the buffer.

Did you tried doing

(setq
  display-buffer-alist
  '((((regexp . ".*"))
     (reuse-window other same)
     (reuse-window-even-sizes . t)
     (reuse-window other other)
     (reuse-window-even-sizes . nil))))

It works for me here.  That is, if I want to display *scratch* and
another window shows it already, window sizes are evened out.  If no
other window shows it, window sizes are left alone.

Things like reuse-window-even-sizes are relicts from the days when most
users were happy to accomodate two windows within a frame.  It's hardly
suited for frames showing more than two windows.  Anyway, it comes from
a global option, currently enabled by default, so I have to respect it
for compatibility reasons.  It's hardly justifiable to bother users with
repeating their settings for all `pop-up-window' specifiers, though.

 > I think this indicates that the idea of "merging" specifiers is flawed.

Hopefully not.  IMHO not merging specifiers would be a real pain.  You
couldn't manage the size of `display-buffer-alist' after a few months.

 > display-buffer-alist is trying to serve two purposes: "merging"
 > specifiers passed to display-buffer, and "overriding" them completely.
 > That makes it very complicated to use/understand.

Merging should be the rule.  Overriding should happen only in a few
cases, when a user is completely dissatisfied with the application's
specifier.  In practice, this means that we can either tell a user on
Emacs-devel something like "this should get fixed by the application
soon, meanwhile try to override this by ..." or "the behavior you want
is very unusual so could you please try overriding it by ...".

 > Why not let display-buffer-alist exclusively perform the "override"
 > case---i.e. let it take precedence over display-buffer's argument
 > specifiers?

Impossible.  The first consequence of this would be applications
rebinding `display-buffer-alist' to nil around `display-buffer' calls.
How would you implement `info-other-window' or `find-file-other-frame'
when the user has a `display-buffer-alist' entry for *Info* or the file
in question?

 > As for the "merge" functionality, some of it is already handled using
 > global variables, like `even-window-heights'.  In the future, we could
 > provide a more versatile way to do merging (e.g.  provide an abnormal
 > hook that accepts the display specifier that Emacs is told to use, and
 > return a modified specifier for it to actually use).  But I think we can
 > defer that part to post-24.1.

These Emacs 23 options are converted to buffer display specifiers which
`display-buffer' handles just like any other display specifiers supplied
by `display-buffer-alist' or the application.  The main idea of
`display-buffer-alist' is to obsolete all these "global variables" in
favor of one.

martin



  reply	other threads:[~2011-07-24 10:07 UTC|newest]

Thread overview: 230+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-16 20:35 display-buffer-alist simplifications Chong Yidong
2011-07-17  1:38 ` Juanma Barranquero
2011-07-17  9:41   ` martin rudalics
2011-07-17  9:40 ` martin rudalics
2011-07-18 15:15   ` Stefan Monnier
2011-07-18 18:52     ` martin rudalics
2011-07-18 20:34       ` Juanma Barranquero
2011-07-18 21:28         ` Drew Adams
2011-08-02  1:36       ` Stefan Monnier
2011-08-02 14:26         ` martin rudalics
2011-08-02 16:41           ` Drew Adams
2011-08-03 16:22             ` martin rudalics
2011-08-03 17:36               ` Drew Adams
2011-08-04 13:59                 ` martin rudalics
2011-08-04 15:48                   ` Drew Adams
2011-08-02 18:38           ` Stefan Monnier
2011-08-03 16:23             ` martin rudalics
2011-08-04 18:16               ` Stefan Monnier
2011-08-05 16:01                 ` martin rudalics
2011-08-05 17:45                   ` Drew Adams
2011-08-06 13:29                     ` martin rudalics
2011-08-06 15:33                       ` Drew Adams
2011-08-07  8:32                         ` martin rudalics
2011-08-05 19:22                   ` Stefan Monnier
2011-08-06 13:45                     ` martin rudalics
2011-08-08  2:41                       ` Stefan Monnier
2011-08-08  4:59                         ` Tim Cross
2011-08-08  9:12                         ` martin rudalics
2011-08-08 13:42                           ` Drew Adams
2011-08-08 19:14                           ` Stefan Monnier
2011-08-09 12:55                             ` martin rudalics
2011-08-09 18:26                               ` Stefan Monnier
2011-08-10  7:10                                 ` martin rudalics
2011-08-05 16:45                 ` Juri Linkov
2011-08-05 19:22                   ` Stefan Monnier
2011-08-07 18:17                     ` Juri Linkov
2011-08-08  0:54                       ` Stefan Monnier
2011-08-08  9:45                         ` Juri Linkov
2011-08-08 19:28                           ` Stefan Monnier
2011-08-09  9:08                             ` Juri Linkov
2011-08-09 18:14                               ` Stefan Monnier
2011-08-09 12:56                             ` martin rudalics
2011-08-09 18:27                               ` Stefan Monnier
2011-08-08 20:51                     ` Chong Yidong
2011-08-08 21:34                       ` Stefan Monnier
2011-08-09  9:11                         ` Juri Linkov
2011-07-23  7:56 ` martin rudalics
2011-07-23  8:26   ` Eli Zaretskii
2011-07-23 18:39     ` martin rudalics
2011-07-23 17:22   ` Chong Yidong
2011-07-23 18:40     ` martin rudalics
2011-07-23 19:26       ` Chong Yidong
2011-07-24 10:07         ` martin rudalics [this message]
2011-07-24 13:54           ` Chong Yidong
2011-07-24 17:05             ` martin rudalics
2011-07-24 17:11               ` martin rudalics
2011-07-24 21:32               ` Chong Yidong
2011-07-25  9:18                 ` martin rudalics
2011-07-25  9:29                   ` Štěpán Němec
2011-07-25 11:41                     ` Juanma Barranquero
2011-07-26  1:03                       ` Tim Cross
2011-07-25 11:15                   ` Juri Linkov
2011-07-26  1:15                     ` Stephen J. Turnbull
2011-07-26  5:21                       ` David Kastrup
2011-07-26  9:10                         ` Stephen J. Turnbull
2011-07-26 10:50                           ` David Kastrup
2011-07-26  6:15                       ` Juri Linkov
2011-07-31 13:47                         ` martin rudalics
2011-08-01  8:03                           ` Juri Linkov
2011-08-01 18:57                             ` martin rudalics
2011-07-31 13:49                     ` martin rudalics
2011-08-01  8:08                       ` Juri Linkov
2011-08-01 18:57                         ` martin rudalics
2011-07-27  2:43                   ` Chong Yidong
2011-07-27  4:59                     ` Eli Zaretskii
2011-07-27  8:08                       ` Tim Cross
2011-07-27 11:25                       ` Juanma Barranquero
2011-07-27 11:27                         ` Juanma Barranquero
2011-07-27 11:30                         ` Lars Magne Ingebrigtsen
2011-07-27 11:47                           ` David Kastrup
2011-07-27 12:04                             ` Juanma Barranquero
2011-07-27 12:02                           ` Juanma Barranquero
2011-07-27 16:16                             ` Eli Zaretskii
2011-07-27 15:52                       ` Drew Adams
2011-07-28 15:57                       ` Chong Yidong
2011-07-31 13:46                         ` martin rudalics
2011-07-27 16:10                     ` martin rudalics
2011-07-27 20:27                     ` Juri Linkov
2011-07-28  2:12                       ` Stephen J. Turnbull
2011-07-28  2:35                         ` Juanma Barranquero
2011-07-28  4:46                         ` Eli Zaretskii
2011-07-28  7:45                           ` Stephen J. Turnbull
2011-07-28  9:09                             ` Eli Zaretskii
2011-07-29  1:39                               ` Stephen J. Turnbull
2011-07-29  6:51                                 ` Eli Zaretskii
2011-07-29  7:44                                   ` Stephen J. Turnbull
2011-07-29  7:58                                     ` Eli Zaretskii
2011-07-30 16:08                                       ` Stephen J. Turnbull
2011-07-30 16:28                                         ` Eli Zaretskii
2011-07-30 16:45                                           ` David Kastrup
2011-07-30 17:12                                             ` Eli Zaretskii
2011-07-31  9:07                                           ` Stephen J. Turnbull
2011-07-29 11:09                                   ` Juanma Barranquero
2011-07-28 16:41                       ` Chong Yidong
2011-07-29 11:04                         ` Juri Linkov
2011-07-31 13:48                           ` martin rudalics
2011-08-01  8:12                             ` Juri Linkov
2011-07-31 13:48                         ` martin rudalics
2011-08-01  8:19                           ` Juri Linkov
2011-08-01 18:57                             ` martin rudalics
2011-07-31 13:48                       ` martin rudalics
2011-08-01  8:20                         ` Juri Linkov
2011-08-01 17:13                           ` Chong Yidong
2011-08-01 23:34                             ` Andy Moreton
2011-08-02 14:24                             ` martin rudalics
2011-08-02 16:41                               ` Stefan Monnier
2011-08-03 16:22                                 ` martin rudalics
2011-08-03 16:26                                   ` Nix
2011-08-03 16:40                                     ` martin rudalics
2011-08-04  2:27                                   ` Stefan Monnier
2011-08-04 14:00                                     ` martin rudalics
2011-08-04 20:07                                       ` Stefan Monnier
2011-08-03 20:29                               ` Chong Yidong
2011-08-04 13:59                                 ` martin rudalics
2011-08-05 17:48                                   ` Chong Yidong
2011-08-06 13:30                                     ` martin rudalics
2011-08-08  1:27                                       ` Stefan Monnier
2011-08-08  9:10                                         ` martin rudalics
2011-08-08  9:49                                           ` Andreas Röhler
2011-08-08  9:52                                           ` Juri Linkov
2011-08-08 12:26                                             ` martin rudalics
2011-08-08 18:51                                               ` Stefan Monnier
2011-08-09 12:55                                                 ` martin rudalics
2011-08-09 18:19                                                   ` Stefan Monnier
2011-08-10  7:10                                                     ` martin rudalics
2011-08-10 13:01                                                       ` Stefan Monnier
2011-08-11  9:35                                                         ` martin rudalics
2011-08-11 13:50                                                           ` Stefan Monnier
2011-08-12 14:05                                                             ` martin rudalics
2011-08-12 18:03                                                               ` Chong Yidong
2011-08-13  2:29                                                                 ` Stefan Monnier
2011-08-13 13:44                                                                   ` martin rudalics
2011-08-13 14:32                                                                     ` Stefan Monnier
2011-08-16  9:33                                                                       ` Juri Linkov
2011-08-16 15:37                                                                         ` martin rudalics
2011-08-17  9:27                                                                           ` Juri Linkov
2011-08-18  6:57                                                                             ` martin rudalics
2011-08-13 13:44                                                                 ` martin rudalics
2011-08-13  2:29                                                               ` Stefan Monnier
2011-08-13 13:44                                                                 ` martin rudalics
2011-08-13 14:30                                                                   ` Stefan Monnier
2011-08-28  8:05                                                             ` martin rudalics
2011-08-29  9:34                                                               ` martin rudalics
2011-08-29 15:17                                                                 ` Stefan Monnier
2011-08-29 15:07                                                               ` Stefan Monnier
2011-08-29 19:04                                                                 ` martin rudalics
2011-08-29 19:45                                                                   ` Juri Linkov
2011-08-30  4:10                                                                   ` Stefan Monnier
2011-08-31  1:43                                                                   ` Chong Yidong
2011-08-31  2:07                                                                     ` Drew Adams
2011-08-31  3:01                                                                       ` Chong Yidong
2011-08-31  9:33                                                                         ` martin rudalics
2011-08-31  9:57                                                                           ` Juri Linkov
2011-08-31 11:46                                                                             ` martin rudalics
2011-08-31 15:42                                                                             ` Chong Yidong
2011-08-31 16:59                                                                               ` Juri Linkov
2011-09-01  2:06                                                                                 ` Chong Yidong
2011-09-02  1:33                                                                               ` Stefan Monnier
2011-09-02 14:54                                                                                 ` Chong Yidong
     [not found]                                                                                   ` <jwvbouyxu1j.fsf-monnier+emacs@gnu.org>
     [not found]                                                                                     ` <87sjo9hfar.fsf@stupidchicken.com>
     [not found]                                                                                       ` <jwvy5y1a6n5.fsf-monnier+emacs@gnu.org>
     [not found]                                                                                         ` <874o0p8emk.fsf@stupidchicken.com>
     [not found]                                                                                           ` <jwv8vq1t8u8.fsf-monnier+emacs@gnu.org>
     [not found]                                                                                             ` <87ipp4webw.fsf@stupidchicken.com>
     [not found]                                                                                               ` <jwvvct3q0t8.fsf-monnier+emacs@gnu.org>
     [not found]                                                                                                 ` <87bouvniij.fsf@stupidchicken.com>
     [not found]                                                                                                   ` <jwv7h5i91qh.fsf-monnier+emacs@gnu.org>
     [not found]                                                                                                     ` <87aaaeikr6.fsf@stupidchicken.com>
     [not found]                                                                                                       ` <jwvsjo6v5l2.fsf-monnier+emacs@gnu.org>
     [not found]                                                                                                         ` <878vpx3g4d.fsf@stupidchicken.com>
     [not found]                                                                                                           ` <jwvfwk5h11g.fsf-monnier+emacs@gnu.org>
     [not found]                                                                                                             ` <87pqj9qqhp.fsf@stupidchicken.com>
     [not found]                                                                                                               ` <jwvmxedfbzo.fsf-monnier+emacs@gnu.org>
2011-09-11 20:40                                                                                                                 ` display-buffer-overriding-action Chong Yidong
2011-09-12  0:04                                                                                                                   ` display-buffer-overriding-action Juanma Barranquero
2011-09-13  0:55                                                                                                                   ` display-buffer-overriding-action Stefan Monnier
2011-09-13  2:39                                                                                                                     ` display-buffer-overriding-action Chong Yidong
2011-09-13 17:59                                                                                                                       ` display-buffer-overriding-action Stefan Monnier
2011-09-13 19:01                                                                                                                         ` display-buffer-overriding-action Chong Yidong
2011-09-13 19:28                                                                                                                           ` display-buffer-overriding-action Chong Yidong
2011-09-13 20:48                                                                                                                           ` display-buffer-overriding-action Stefan Monnier
2011-09-13 22:40                                                                                                                             ` display-buffer-overriding-action Chong Yidong
2011-09-14  0:53                                                                                                                               ` display-buffer-overriding-action Stefan Monnier
2011-09-14  2:13                                                                                                                                 ` display-buffer-overriding-action Chong Yidong
2011-09-14 18:33                                                                                                                                   ` display-buffer-overriding-action Stefan Monnier
2011-09-14 22:36                                                                                                                                     ` display-buffer-overriding-action Chong Yidong
2011-09-15  0:04                                                                                                                                       ` display-buffer-overriding-action Stefan Monnier
2011-08-31 15:56                                                                           ` display-buffer-alist simplifications Chong Yidong
2011-09-01  0:25                                                                             ` martin rudalics
2011-09-01  2:04                                                                               ` Chong Yidong
2011-09-01 15:35                                                                                 ` martin rudalics
2011-09-01 16:07                                                                                   ` Chong Yidong
2011-08-31 13:33                                                                         ` Drew Adams
2011-09-01  1:35                                                                           ` Stephen J. Turnbull
2011-08-09  4:41                                               ` John Yates
2011-08-08 18:43                                           ` Stefan Monnier
2011-08-09  0:47                                             ` Stephen J. Turnbull
2011-08-09 12:54                                             ` martin rudalics
2011-08-09 18:12                                               ` Stefan Monnier
2011-08-10  7:09                                                 ` martin rudalics
2011-08-10 10:42                                                   ` Štěpán Němec
2011-08-10 12:50                                                     ` Stefan Monnier
2011-08-10 14:26                                                     ` Drew Adams
2011-08-10  9:17                                               ` Juri Linkov
2011-08-10 13:11                                                 ` Stefan Monnier
2011-08-08  9:49                                         ` Juri Linkov
2011-08-08 19:31                                           ` Stefan Monnier
2011-08-07 18:12                                     ` Juri Linkov
2011-08-02 18:01                             ` Juri Linkov
2011-08-03 16:22                               ` martin rudalics
2011-08-01 18:57                           ` martin rudalics
2011-08-01 16:16                         ` Chong Yidong
2011-08-01 18:57                           ` martin rudalics
2011-08-02  2:36                             ` Chong Yidong
2011-08-03  6:39                             ` Stephen J. Turnbull
2011-07-23 19:42       ` Chong Yidong
2011-07-24 10:07         ` martin rudalics
  -- strict thread matches above, loose matches on Subject: below --
2011-07-24 21:44 grischka
2011-07-25  9:18 ` martin rudalics
2011-07-25 11:22   ` grischka
2011-07-26  6:18     ` Juri Linkov
2011-07-27 13:07       ` grischka
2011-07-30  8:40         ` Juri Linkov
2011-07-31 15:48           ` grischka
2011-08-01  8:23             ` Juri Linkov
2011-08-04 19:59 grischka
2011-08-04 21:01 ` Stefan Monnier
2011-08-05 20:33   ` grischka
2011-08-07 18:22     ` Juri Linkov
2011-08-08  0:59       ` Stefan Monnier
2011-08-08  9:07         ` martin rudalics
2011-08-08 14:01 grischka
2011-08-10 16:31 grischka
2011-08-10 17:06 ` Drew Adams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E2BEED2.5040608@gmx.at \
    --to=rudalics@gmx.at \
    --cc=cyd@stupidchicken.com \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.