From: Stefan Monnier <monnier@iro.umontreal.ca>
To: martin rudalics <rudalics@gmx.at>
Cc: Juri Linkov <juri@jurta.org>,
Chong Yidong <cyd@stupidchicken.com>,
emacs-devel@gnu.org
Subject: Re: display-buffer-alist simplifications
Date: Mon, 08 Aug 2011 14:43:32 -0400 [thread overview]
Message-ID: <jwvei0viwnx.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <4E3FA812.3080009@gmx.at> (martin rudalics's message of "Mon, 08 Aug 2011 11:10:42 +0200")
> At which point you can give up the idea of merging. I meanwhile know
> that no one here likes the idea of merging specifiers and don't have the
> slightest intention to fight for it any more. But no one so far has
> cared to explain how to support all the things people have piled up over
> the years like split-height-threshold, even-window-heights, or
> display-buffer-mark-dedicated. I'd be all in favor of functions if you
> told me how to write a function that within a year has not been
> rewritten completely because it's oh so important to add a little thingy
> here and there.
I think these will have to be handled in each display-buffer-<foo> function.
Of course, that means that to avoid code duplication we'll want to
structure those functions with care.
>>>> (I'll use the word "macro" for now, but we might want to pick another
>>>> word since "macro" can be confused with keyboard macros.)
>>> I'd very much appreciate if someone could invent a more useful term for
>>> these.
>> The name exists already, it's called a function definition. It's really
>> well supported by a lot of Emacs code: you can document those "macros"
>> in a very simple way, let users get that doc via C-h f, see them work
>> step by step with edebug, have feedback about their correctness/style
>> with M-x byte-compile-file, ...
> We currently have many ways to specify a function for displaying a
> buffer: `display-buffer-function', `special-display-function',
> `pop-up-frame-function', `split-window-preferred-function', the function
> one can specify via `special-display-regexps'. I know of two people who
> customized the latter - Drew and you. This doesn't strike me as a story
> of success.
Irrelevant. I'm not talking about the success of hooks, I'm talking
about the success of functions as a way to name a bunch of things, so you
can reuse them conveniently.
I don't really care if people define their own functions or not: we'll
provide our own set of functions so those who can't define their own can
just chose one of the predefined behaviors.
The hook just provides a good way to structure and modularize the code.
>>>> - `display-buffer-alist' is an alist that maps a matcher (regexp,
>>>> label, or matcher function) to an alist of display specifiers.
>> If display specifiers are of the form (VAR . VAL), then you presumably
>> mean "a list of display specifiers" rather than "an alist of ...".
> It's an alist where the key of each element is a display specifier.
I'm lost.
So display-buffer-alist would be a list of (MATCHER . THINGS) where
THINGS are lists of (DISPLAY-SPECIFIERS . SOMETHING-ELSE)? What are the
SOMETHING-ELSE and what do they do?
> OK. I agree with the idea to support the old code and its options as
> fallback and try to get a new behavior. But what I'm missing is a
> strategy for how to merge-in the re-bindings of the old options within
> the old _and_ the new code. Things like
> (defun message-mail-other-window (&optional to subject)
> "Like `message-mail' command, but display mail buffer in another window."
> (interactive)
> (unless (message-mail-user-agent)
> (let ((pop-up-windows t)
> (special-display-buffer-names nil)
> (special-display-regexps nil)
> (same-window-buffer-names nil)
> (same-window-regexps nil))
> (message-pop-to-buffer (message-buffer-name "mail" to))))
> which I intended to rewrite as
> (defun message-mail-other-window (&optional to subject)
> "Like `message-mail' command, but display mail buffer in another window."
> (interactive)
> (unless (message-mail-user-agent)
> (message-pop-to-buffer (message-buffer-name "mail" to) 'other-window)))
Rather than `other-window', my suggestion is to pass a RULE,
i.e. something like '(display-buffer-other-window . ARGS), but yes that
sounds about right.
> would then become
> (defun message-mail-other-window (&optional to subject)
> "Like `message-mail' command, but display mail buffer in another window."
> (interactive)
> (unless (message-mail-user-agent)
> (let ((pop-up-windows t)
> (special-display-buffer-names nil)
> (special-display-regexps nil)
> (same-window-buffer-names nil)
> (same-window-regexps nil))
> (message-pop-to-buffer (message-buffer-name "mail" to) 'other-window)))
No, because the RULE takes precedence over the
display-buffer-default-rule which is the one that obeys pop-up-frames
and stuff. At least, that's what my idealized design does.
Of course, such paper designs tend to behave unrealistically well.
>> So, as is the case now, your list of specifiers is not truly an alist
>> (i.e. earlier elements don't override later elements), instead it's
>> a mix between an alist and an `or block'?
>> That sounds like a problem.
> If someone told me how to address the problem of merging specifiers in a
> different way I'd be all ears.
My suggestion is to not merge them, basically.
Stefan
next prev parent reply other threads:[~2011-08-08 18:43 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
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 [this message]
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=jwvei0viwnx.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=cyd@stupidchicken.com \
--cc=emacs-devel@gnu.org \
--cc=juri@jurta.org \
--cc=rudalics@gmx.at \
/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.