emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: display-buffer-alist simplifications


From: Juri Linkov
Subject: Re: display-buffer-alist simplifications
Date: Tue, 09 Aug 2011 12:08:45 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (x86_64-pc-linux-gnu)

>>> In my proposal, these things are called "rule", where RULE has the form
>>> (FUNCTION . ARGS).
>> In classical logic, necessary part of "rule" is "condition".
>
> I don't care about which name is used.  I didn't choose SPECIFIER
> because that's already used in this discussion for the same purpose but
> with a different representation and the whole point of this discussion
> is to figure out which representation to use.

I agree that SPECIFIER doesn't say that it's a function call.
Actually in logic, second part of the rule is called ACTION.
Moreover, a function call is a typical case of ACTION.

So let's be clear in the terminology from the beginning
to avoid the mess and misunderstandings later:

  RULE   ::= (CONDITION . ACTION)
  ACTION ::= (FUNCTION . ARGS)

> My suggestion was to have display-buffer-alist be a list of
> (CONDITION . RULE).

Sorry, it hurts my brains to read (CONDITION . RULE).  When I try to
expand RULE whose first part should be CONDITION according to its
classical definition, with (CONDITION . (CONDITION . (CONDITION . ...)))
I'm going into infinite recursion :)

>>   (display-buffer buffer 'same-frame)
>>   (display-buffer buffer 'same-window)
>>   (display-buffer buffer 'other-window)
>>   (display-buffer buffer 'nearby)
>>   (display-buffer buffer 'near-minibuffer)
>>   (display-buffer buffer 'below-selected)
>>   (display-buffer buffer 'side-window)
>
> I don't know if I was worried about size, but right now I'm not too
> worried about size, no.

I'm worried about size, but with your design this problem could be later
mitigated with something like this in `display-buffer':

  (let ((function (intern (format "display-buffer-%s" (car specifiers)))))
    (if (functionp function)
        (apply function args)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]