Subject: Re: bug#79106: [PATCH] Add new optional keywords to use-package

From: Eli Zaretskii <[email-masked]>
Date: Thu, 07 Aug 2025 17:52:12 +0300

> From: Philip Kaludercic <[email-masked]>
> Cc: Elijah Gabe Pérez <[email-masked]>,
>   [email-masked],
>   [email-masked],  [email-masked],  [email-masked]
> Date: Thu, 07 Aug 2025 14:26:53 +0000
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> >> > Suggestion 1: allow many hooks to be specified in a list
> >> >
> >> > :hook+ (foo-mode . (bar baz quux))
> >> >
> >> > adds functions bar, baz and quux to foo-mode-hook.  (To disambiguate
> >> > between a list of hook functions and a lambda, you can look at the car
> >> > of the list maybe?)
> >> 
> >> It is not possible because (foo-mode . (bar baz quux)) is expanded as
> >> (foo-mode bar baz quux), and this can be misinterpreted by :hook+ as a
> >> list of hooks.
> >> 
> >> The only workaround i found is making a kind of separator (:multi),
> >> which tells :hook+ the cdr is a list of functions, not part of a list of
> >> hooks.
> >> 
> >> I know that :multi can look weird (even i was thinking in rename it [1]
> >> or use a better separator), but it was the only solution i found and
> >> worked.
> >> 
> >> > Suggestion 2: allow many hooks to be added to.  (:hook already does
> >> > this)
> >> >
> >> > :hook+ ((foo-mode cor-mode) . (bar baz quux))
> >> >
> >> > Adds the three functions to both foo-mode-hook and cor-mode-hook.
> >> 
> >> Similar problem as previous.
> >> 
> >> > Suggestion 3: Allow DEPTH and LOCAL to be optionally specified with
> >> > the functions,
> >> > in the same order as add-hook.
> >> >
> >> > :hook+ (foo-mode . ((bar 90 t)
> >> >                     baz
> >> >                     (quux -30)
> >> >                     (cor nil t))
> >> >
> >> > will install 
> >> > - bar at depth 90, to be run buffer-locally when foo-mode-hook runs
> >> > - baz without special accommodations, and
> >> > - quux at depth -30.
> >> > - cor buffer-locally with default depth
> >> 
> >> I like this, i think i can implement only the "local" part.
> >> But of course, only part of :multi.
> >> 
> >> If i can get rid of `:multi` i can implement this, but it will look
> >> somewhat ugly:
> >> 
> >>   :hook+ (foo-mode . '((bar 90 t)))
> >
> > So what is the outcome of this discussion?  Are you working on an
> > updated patch, or should I install the last one you posted?
> 
> I believe there was a reasonable doubt whether we need some of the
> keywords at all from the initial patch.  So my vote would be to hold
> back from that option for now, and figure out what would make sense to
> add to the core.

Figure out how?

AFAIU, the latest round of comments just brought up an issue with
:hook+, and the rest didn't cause any objections?  Why not install
them?