* [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve @ 2021-05-05 13:26 Xinglu Chen 2021-05-05 17:39 ` Leo Prikler 0 siblings, 1 reply; 13+ messages in thread From: Xinglu Chen @ 2021-05-05 13:26 UTC (permalink / raw) To: 48237 * gnu/packages/emacs-xyz.scm (emacs-consult)[propagated-inputs]: Add emacs-vertico. --- emacs-vertico is an optional dependency so maybe there is a better way deal with this. Splitting the package into multiple outputs might be a better idea, but I don’t know how we would do that. gnu/packages/emacs-xyz.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 1a640a53f3..92b3e6ce37 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -7579,7 +7579,8 @@ style, or as multiple word prefixes.") (build-system emacs-build-system) (propagated-inputs `(("emacs-flycheck" ,emacs-flycheck) - ("emacs-selectrum" ,emacs-selectrum))) + ("emacs-selectrum" ,emacs-selectrum) + ("emacs-vertico" ,emacs-vertico))) (home-page "https://github.com/minad/consult") (synopsis "Consulting completing-read") (description "This package provides various handy commands based on the base-commit: 56e4d7204b0d4f83ab8cf4aab24199a9f8dc082c -- 2.31.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve 2021-05-05 13:26 [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve Xinglu Chen @ 2021-05-05 17:39 ` Leo Prikler 2021-05-07 14:23 ` Xinglu Chen 0 siblings, 1 reply; 13+ messages in thread From: Leo Prikler @ 2021-05-05 17:39 UTC (permalink / raw) To: Xinglu Chen, 48237; +Cc: Maxim Cournoyer Am Mittwoch, den 05.05.2021, 15:26 +0200 schrieb Xinglu Chen: > emacs-vertico is an optional dependency so maybe there is a better > way > deal with this. Splitting the package into multiple outputs might be > a > better idea, but I don’t know how we would do that. This is certainly an interesting question. With other Emacs packages, there is sometimes a contrib version, that adds "more", see e.g. org- mode or telega. But those are tied closely to what upstream considers contrib, so I don't think that applies here. IIUC selectrum is likewise optional. Perhaps we should consider not propagating optional inputs, but rather adding them as normal inputs – so that byte compilation succeeds, but users won't be forced to have a rather large elisp library as part of their profiles if it's not needed. I've CC'd Maxim to get their input on the matter, the patch otherwise LGTM. Regards, Leo ^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve 2021-05-05 17:39 ` Leo Prikler @ 2021-05-07 14:23 ` Xinglu Chen 2021-06-02 15:32 ` Xinglu Chen 0 siblings, 1 reply; 13+ messages in thread From: Xinglu Chen @ 2021-05-07 14:23 UTC (permalink / raw) To: Leo Prikler, 48237; +Cc: Maxim Cournoyer On Wed, May 05 2021, Leo Prikler wrote: > Am Mittwoch, den 05.05.2021, 15:26 +0200 schrieb Xinglu Chen: >> emacs-vertico is an optional dependency so maybe there is a better >> way >> deal with this. Splitting the package into multiple outputs might be >> a >> better idea, but I don’t know how we would do that. > This is certainly an interesting question. With other Emacs packages, > there is sometimes a contrib version, that adds "more", see e.g. org- > mode or telega. But those are tied closely to what upstream considers > contrib, so I don't think that applies here. Yeah, Org has a separate contrib/ directory. > IIUC selectrum is likewise optional. Perhaps we should consider not > propagating optional inputs, but rather adding them as normal inputs – > so that byte compilation succeeds, but users won't be forced to have a > rather large elisp library as part of their profiles if it's not > needed. I think this might be the best option. ^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve 2021-05-07 14:23 ` Xinglu Chen @ 2021-06-02 15:32 ` Xinglu Chen 2021-08-11 15:23 ` Arun Isaac 0 siblings, 1 reply; 13+ messages in thread From: Xinglu Chen @ 2021-06-02 15:32 UTC (permalink / raw) To: Leo Prikler, 48237; +Cc: Maxim Cournoyer [-- Attachment #1: Type: text/plain, Size: 29 bytes --] Ping! Maxim, any opinions? [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 861 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve 2021-06-02 15:32 ` Xinglu Chen @ 2021-08-11 15:23 ` Arun Isaac 2021-09-06 13:47 ` Xinglu Chen 0 siblings, 1 reply; 13+ messages in thread From: Arun Isaac @ 2021-08-11 15:23 UTC (permalink / raw) To: Xinglu Chen, Leo Prikler, 48237; +Cc: Maxim Cournoyer [-- Attachment #1: Type: text/plain, Size: 839 bytes --] Hi all, I actually think we should not add emacs-vertico to the propagated-inputs, and remove emacs-flycheck and emacs-selectrum as well. All these are optional dependencies, and we should leave it to the user to install the ones they want. At least in this specific case, the three packages (flycheck, selectrum and vertico) are the kind the user would want to explicitly install. They aren't backend libraries that ought to remain invisible to the user. In fact, this is the version of emacs-consult I have installed in my profile. --8<---------------cut here---------------start------------->8--- (package (inherit emacs-consult) (propagated-inputs `())) --8<---------------cut here---------------end--------------->8--- Also, byte compilation works for me without any propagated inputs. Am I missing something? Regards, Arun [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 524 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve 2021-08-11 15:23 ` Arun Isaac @ 2021-09-06 13:47 ` Xinglu Chen 2021-09-06 17:51 ` Maxim Cournoyer 0 siblings, 1 reply; 13+ messages in thread From: Xinglu Chen @ 2021-09-06 13:47 UTC (permalink / raw) To: Arun Isaac, Leo Prikler, 48237; +Cc: Maxim Cournoyer [-- Attachment #1: Type: text/plain, Size: 1145 bytes --] On Wed, Aug 11 2021, Arun Isaac wrote: > Hi all, > > I actually think we should not add emacs-vertico to the > propagated-inputs, and remove emacs-flycheck and emacs-selectrum as > well. All these are optional dependencies, and we should leave it to the > user to install the ones they want. At least in this specific case, the > three packages (flycheck, selectrum and vertico) are the kind the user > would want to explicitly install. They aren't backend libraries that > ought to remain invisible to the user. > > In fact, this is the version of emacs-consult I have installed in my > profile. > > --8<---------------cut here---------------start------------->8--- > (package > (inherit emacs-consult) > (propagated-inputs `())) > --8<---------------cut here---------------end--------------->8--- > > Also, byte compilation works for me without any propagated inputs. Am I > missing something? Another option would be to define package variants of ‘emacs-consult’, that way we would have four packages: * emacs-consult; * emacs-consult-flycheck; * emacs-consult-vertico; and * emacs-consult. WDYT? [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 861 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve 2021-09-06 13:47 ` Xinglu Chen @ 2021-09-06 17:51 ` Maxim Cournoyer 2021-09-06 18:05 ` Liliana Marie Prikler 0 siblings, 1 reply; 13+ messages in thread From: Maxim Cournoyer @ 2021-09-06 17:51 UTC (permalink / raw) To: Xinglu Chen; +Cc: Arun Isaac, Leo Prikler, 48237 Hello Arun, Xinglu Chen <public@yoctocell.xyz> writes: > On Wed, Aug 11 2021, Arun Isaac wrote: > >> Hi all, >> >> I actually think we should not add emacs-vertico to the >> propagated-inputs, and remove emacs-flycheck and emacs-selectrum as >> well. All these are optional dependencies, and we should leave it to the >> user to install the ones they want. At least in this specific case, the >> three packages (flycheck, selectrum and vertico) are the kind the user >> would want to explicitly install. They aren't backend libraries that >> ought to remain invisible to the user. >> >> In fact, this is the version of emacs-consult I have installed in my >> profile. Guix packages typically come as featureful as possible unless there are good reasons not too (to minimize the closure size, for example). In this case, the added optional dependencies seem to have negligible effect on the closure size, according to `guix size`; I'd be in favor to keep the optional dependencies specified for that reason, unless there are other considerations that I'm missing. > Another option would be to define package variants of ‘emacs-consult’, > that way we would have four packages: > > * emacs-consult; > * emacs-consult-flycheck; > * emacs-consult-vertico; and > * emacs-consult. I would prefer not go that route (variants multiplication), especially when the user already has a way to customize. My 2 cents, Maxim ^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve 2021-09-06 17:51 ` Maxim Cournoyer @ 2021-09-06 18:05 ` Liliana Marie Prikler 2021-09-06 20:34 ` Arun Isaac ` (2 more replies) 0 siblings, 3 replies; 13+ messages in thread From: Liliana Marie Prikler @ 2021-09-06 18:05 UTC (permalink / raw) To: Maxim Cournoyer, Xinglu Chen; +Cc: Arun Isaac, 48237 Am Montag, den 06.09.2021, 13:51 -0400 schrieb Maxim Cournoyer: > Hello Arun, > > Xinglu Chen <public@yoctocell.xyz> writes: > > > On Wed, Aug 11 2021, Arun Isaac wrote: > > > > > Hi all, > > > > > > I actually think we should not add emacs-vertico to the > > > propagated-inputs, and remove emacs-flycheck and emacs-selectrum > > > as well. All these are optional dependencies, and we should leave > > > it to the user to install the ones they want. At least in this > > > specific case, the three packages (flycheck, selectrum and > > > vertico) are the kind the user would want to explicitly install. > > > They aren't backend libraries that ought to remain invisible to > > > the user. > > > > > > In fact, this is the version of emacs-consult I have installed in > > > my profile. > > Guix packages typically come as featureful as possible unless there > are good reasons not too (to minimize the closure size, for > example). In this case, the added optional dependencies seem to have > negligible effect on the closure size, according to `guix size`; I'd > be in favor to keep the optional dependencies specified for that > reason, unless there are other considerations that I'm missing. While closure size is normally a good metric, with interpreted languages like Emacs Lisp you have the added baggage of *propagating* inputs, thereby installing stuff at user (or system) level, that the user did not actually ask for. My personal take on those is to provide them as inputs where necessary to compile, but not actually propagate them where not necessary to run. For example, an Emacs package might require emacs-dash to function at all and might install some autocompletion stuff with emacs-autocomplete or emacs-company (perhaps even both). emacs-dash absolutely must be propagated, but unless you're already using autocomplete or company and thus have them in your manifest, you probably don't want them to be installed by emacs-foo. Does this make sense? ^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve 2021-09-06 18:05 ` Liliana Marie Prikler @ 2021-09-06 20:34 ` Arun Isaac 2021-09-06 23:18 ` Maxim Cournoyer 2021-09-06 23:17 ` Maxim Cournoyer 2021-09-07 17:49 ` Xinglu Chen 2 siblings, 1 reply; 13+ messages in thread From: Arun Isaac @ 2021-09-06 20:34 UTC (permalink / raw) To: Liliana Marie Prikler, Maxim Cournoyer, Xinglu Chen; +Cc: 48237 [-- Attachment #1: Type: text/plain, Size: 800 bytes --] Hi all, > unless you're already using autocomplete or company and > thus have them in your manifest, you probably don't want them to be > installed by emacs-foo. Does this make sense? I agree. Closure size isn't the right metric for this case. emacs-vertico and emacs-selectrum aren't really optional dependencies in the normal sense. The user would only want one of them in their profile, and never both. Propagating both would rather be a nuisance to the user. > I would prefer not go that route (variants multiplication), especially > when the user already has a way to customize. I agree. Variant multiplication would result in a minor combinatorial explosion. emacs-vertico and emacs-selectrum are anyway the kind of package a user would explicitly install in their profile. Cheers! Arun [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 524 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve 2021-09-06 20:34 ` Arun Isaac @ 2021-09-06 23:18 ` Maxim Cournoyer 0 siblings, 0 replies; 13+ messages in thread From: Maxim Cournoyer @ 2021-09-06 23:18 UTC (permalink / raw) To: Arun Isaac; +Cc: 48237, Xinglu Chen, Liliana Marie Prikler Hello, Arun Isaac <arunisaac@systemreboot.net> writes: > Hi all, > >> unless you're already using autocomplete or company and >> thus have them in your manifest, you probably don't want them to be >> installed by emacs-foo. Does this make sense? > > I agree. Closure size isn't the right metric for this > case. emacs-vertico and emacs-selectrum aren't really optional > dependencies in the normal sense. The user would only want one of them > in their profile, and never both. Propagating both would rather be a > nuisance to the user. I see! Thank you for explaining! Maxim ^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve 2021-09-06 18:05 ` Liliana Marie Prikler 2021-09-06 20:34 ` Arun Isaac @ 2021-09-06 23:17 ` Maxim Cournoyer 2021-09-07 7:05 ` Liliana Marie Prikler 2021-09-07 17:49 ` Xinglu Chen 2 siblings, 1 reply; 13+ messages in thread From: Maxim Cournoyer @ 2021-09-06 23:17 UTC (permalink / raw) To: Liliana Marie Prikler; +Cc: Arun Isaac, 48237, Xinglu Chen Hello, Liliana Marie Prikler <liliana.prikler@gmail.com> writes: > Am Montag, den 06.09.2021, 13:51 -0400 schrieb Maxim Cournoyer: >> Hello Arun, >> >> Xinglu Chen <public@yoctocell.xyz> writes: >> >> > On Wed, Aug 11 2021, Arun Isaac wrote: >> > >> > > Hi all, >> > > >> > > I actually think we should not add emacs-vertico to the >> > > propagated-inputs, and remove emacs-flycheck and emacs-selectrum >> > > as well. All these are optional dependencies, and we should leave >> > > it to the user to install the ones they want. At least in this >> > > specific case, the three packages (flycheck, selectrum and >> > > vertico) are the kind the user would want to explicitly install. >> > > They aren't backend libraries that ought to remain invisible to >> > > the user. >> > > >> > > In fact, this is the version of emacs-consult I have installed in >> > > my profile. >> >> Guix packages typically come as featureful as possible unless there >> are good reasons not too (to minimize the closure size, for >> example). In this case, the added optional dependencies seem to have >> negligible effect on the closure size, according to `guix size`; I'd >> be in favor to keep the optional dependencies specified for that >> reason, unless there are other considerations that I'm missing. > While closure size is normally a good metric, with interpreted > languages like Emacs Lisp you have the added baggage of *propagating* > inputs, thereby installing stuff at user (or system) level, that the > user did not actually ask for. My personal take on those is to provide > them as inputs where necessary to compile, but not actually propagate > them where not necessary to run. Thanks for explaining. It makes sense, although there would probably be exceptions. I'm thinking for example about emacs-elpy, for which not propagating optional dependencies would render the package nearly useless out of the box. > For example, an Emacs package might require emacs-dash to function at > all and might install some autocompletion stuff with > emacs-autocomplete or emacs-company (perhaps even both). emacs-dash > absolutely must be propagated, but unless you're already using > autocomplete or company and thus have them in your manifest, you > probably don't want them to be installed by emacs-foo. Does this make > sense? From a purity sense, yes, but propagating autocomplete or company wouldn't cause any problems in practice, no? As another possible option to explore to avoid propagation could be to develop a runpath equivalent for the Emacs compiled format (.elc). More work, but more definitive! Thank you, Maxim ^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve 2021-09-06 23:17 ` Maxim Cournoyer @ 2021-09-07 7:05 ` Liliana Marie Prikler 0 siblings, 0 replies; 13+ messages in thread From: Liliana Marie Prikler @ 2021-09-07 7:05 UTC (permalink / raw) To: Maxim Cournoyer; +Cc: Arun Isaac, 48237, Xinglu Chen Hi, Am Montag, den 06.09.2021, 19:17 -0400 schrieb Maxim Cournoyer: > [...] > > Thanks for explaining. It makes sense, although there would probably > be exceptions. I'm thinking for example about emacs-elpy, for which > not propagating optional dependencies would render the package nearly > useless out of the box. True, that's why those have to be evaluated on a case-by-case basis. FWIW, I do think that not propagating auto-completion frameworks by more or less unrelated packages is a good rule of thumb, however. > > For example, an Emacs package might require emacs-dash to function > > at all and might install some autocompletion stuff with emacs- > > autocomplete or emacs-company (perhaps even both). emacs-dash > > absolutely must be propagated, but unless you're already using > > autocomplete or company and thus have them in your manifest, you > > probably don't want them to be installed by emacs-foo. Does this > > make sense? > > From a purity sense, yes, but propagating autocomplete or company > wouldn't cause any problems in practice, no? Packages installed by Guix do contribute to startup times (guix-emacs autoloads etc.) and if you don't care about a given feature you might also want to update one package separately from the others (because the spacebar heater got deactivated), which would lead to a conflict of propagated inputs. I'm not sure how well the latter would work in practice, but it's a thing to think about especially with libraries that would otherwise propagate nothing. > As another possible option to explore to avoid propagation could be > to develop a runpath equivalent for the Emacs compiled format > (.elc). More work, but more definitive! I think the bigger problem in Emacs is the lacking module system. Even if you have runpaths, you're still polluting the same global namespace. Thanks ^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve 2021-09-06 18:05 ` Liliana Marie Prikler 2021-09-06 20:34 ` Arun Isaac 2021-09-06 23:17 ` Maxim Cournoyer @ 2021-09-07 17:49 ` Xinglu Chen 2 siblings, 0 replies; 13+ messages in thread From: Xinglu Chen @ 2021-09-07 17:49 UTC (permalink / raw) To: Liliana Marie Prikler, Maxim Cournoyer; +Cc: Arun Isaac, 48237 [-- Attachment #1: Type: text/plain, Size: 2669 bytes --] On Mon, Sep 06 2021, Liliana Marie Prikler wrote: > Am Montag, den 06.09.2021, 13:51 -0400 schrieb Maxim Cournoyer: >> Hello Arun, >> >> Xinglu Chen <public@yoctocell.xyz> writes: >> >> > On Wed, Aug 11 2021, Arun Isaac wrote: >> > >> > > Hi all, >> > > >> > > I actually think we should not add emacs-vertico to the >> > > propagated-inputs, and remove emacs-flycheck and emacs-selectrum >> > > as well. All these are optional dependencies, and we should leave >> > > it to the user to install the ones they want. At least in this >> > > specific case, the three packages (flycheck, selectrum and >> > > vertico) are the kind the user would want to explicitly install. >> > > They aren't backend libraries that ought to remain invisible to >> > > the user. >> > > >> > > In fact, this is the version of emacs-consult I have installed in >> > > my profile. >> >> Guix packages typically come as featureful as possible unless there >> are good reasons not too (to minimize the closure size, for >> example). In this case, the added optional dependencies seem to have >> negligible effect on the closure size, according to `guix size`; I'd >> be in favor to keep the optional dependencies specified for that >> reason, unless there are other considerations that I'm missing. > While closure size is normally a good metric, with interpreted > languages like Emacs Lisp you have the added baggage of *propagating* > inputs, thereby installing stuff at user (or system) level, that the > user did not actually ask for. My personal take on those is to provide > them as inputs where necessary to compile, but not actually propagate > them where not necessary to run. > > For example, an Emacs package might require emacs-dash to function at > all and might install some autocompletion stuff with emacs-autocomplete > or emacs-company (perhaps even both). emacs-dash absolutely must be > propagated, but unless you're already using autocomplete or company and > thus have them in your manifest, you probably don't want them to be > installed by emacs-foo. Does this make sense? I just noticed that the “16.4.6 Emacs Packages” section of the manual has the following paragraph. The Elisp dependencies of Emacs packages are typically provided as ‘propagated-inputs’ when required at run time. As for other packages, build or test dependencies should be specified as ‘native-inputs’. Since these optional dependencies (‘emacs-autocomplete’ and ‘emacs-company’ in your case) are not needed at runtime, would it make sense to make them ‘native-inputs’ instead of ‘inputs’? [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 861 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2021-09-07 17:50 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-05-05 13:26 [bug#48237] [PATCH] gnu: emacs-consult: Add ‘emacs-ve Xinglu Chen 2021-05-05 17:39 ` Leo Prikler 2021-05-07 14:23 ` Xinglu Chen 2021-06-02 15:32 ` Xinglu Chen 2021-08-11 15:23 ` Arun Isaac 2021-09-06 13:47 ` Xinglu Chen 2021-09-06 17:51 ` Maxim Cournoyer 2021-09-06 18:05 ` Liliana Marie Prikler 2021-09-06 20:34 ` Arun Isaac 2021-09-06 23:18 ` Maxim Cournoyer 2021-09-06 23:17 ` Maxim Cournoyer 2021-09-07 7:05 ` Liliana Marie Prikler 2021-09-07 17:49 ` Xinglu Chen
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/guix.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).