unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Naoya Yamashita <conao3@gmail.com>
To: thibaut.verron@gmail.com
Cc: eliz@gnu.org, emacs-devel@gnu.org, rms@gnu.org, spacibba@aol.com
Subject: Re: Include leaf in Emacs distribution
Date: Mon, 12 Oct 2020 11:10:45 +0900 (JST)	[thread overview]
Message-ID: <20201012.111045.170746562384965042.conao3@gmail.com> (raw)
In-Reply-To: <CAFsi02TVXSvWqcr2KHrTJRm7o6wqe2ZqSew7v_T8sM-FG6Gg-A@mail.gmail.com>


> Okay, that is definitely added value.

Thanks.

> Because I'm using straight the actual expansion is more complicated,
> but the require is there.

? Yes, use-package is expand `require` Sexp, but leaf is not.

```
(let ((use-package-expand-minimally t))
  (macroexpand-1
   '(use-package flymake)))
;;=> (require 'flymake nil nil)

(let ((leaf-expand-minimally t))
  (macroexpand-1
   '(leaf flymake)))
;;=> (prog1 'flymake)
```

> I was talking about use-package. I have a lot of requires in my
> init.el, but I don't know if they are all necessary. Maybe they are
> only needed for packages for which I had to supply :init
> specifications, or maybe they are not needed at all.
> 
> As for startup time, it is 2s and I use emacsclient. I voluntarily
> choose to load everything at start-up, those 2 seconds are a minor
> annoyance maybe once a day, which is a lot preferrable to several
> minor annoyances when I first open a tex, org or pdf file.
> 
> I have no doubt that leaf has a similar option as use-package to never
> defer loading. :)

leaf always trusts autoload and does not always require it, so
require is only done for packages that explicitly require
it. Therefore, require is only done for packages that explicitly
specify a requirement.  This design was not possible in 2013 when
use-package was created, but few current packages require an
explicit request.

> Interesting. For me :when is the most disappointing feature. My
> typical use-case for conditionally loading a package is the
> availability of some program on the system, or having or not sudo
> rights. Because the :when keyword applies to loading the package, as
> opposed to installing it, I cannot use it in this case.
> 
> So I have a couple (when my-bool (use-package ...)) in my init.

Oh, then you can use leaf's :when keyword.  :when is set more
priority from :ensure, so you can controll :ensure keyword using
:when keyword.

See this example.  leaf generate Sexp what you want.

```
(setq leaf-expand-minimally t)
(setq use-package-expand-minimally t)

(macroexpand-1
 '(use-package flyspell-correct
    :when (executable-find "aspell")
    :ensure t
    :hook org-mode-hook))
;;=> (progn
;;     (use-package-ensure-elpa 'flyspell-correct '(t) 'nil)
;;     (when (executable-find "aspell")
;;       (unless (fboundp 'flyspell-correct)
;;         (autoload #'flyspell-correct "flyspell-correct" nil t))
;;       (add-hook 'org-mode-hook-hook #'flyspell-correct)))

(macroexpand-1
 '(leaf flyspell-correct
    :when (executable-find "aspell")
    :ensure t
    :hook org-mode-hook))
;;=> (prog1 'flyspell-correct
;;     (unless (fboundp 'flyspell-correct-mode)
;;       (autoload #'flyspell-correct-mode "flyspell-correct" nil t))
;;     (when (executable-find "aspell")
;;       (leaf-handler-package flyspell-correct flyspell-correct nil)
;;       (add-hook 'org-mode-hook #'flyspell-correct-mode)))
```

> It might be the best we have, but counting downloads does not count
> individual users. Some users will bootstrap multiple instances of
> emacs with use-package or leaf, each resulting in one download.

It say `download` but download from same IP, count as 1, I
remmember (but no source comment...)

> Also some package managers, such as straight, can completely bypass
> melpa (and elpa too? not sure).

True.

> And I wouldn't be too surprised if a significant part of leaf's 150k
> were already included in the 1.1M of use-package.
> 
> It's only tangentially related, but maybe we could suggest that Melpa
> report downloads per year, that might already give a better measure of
> the number of current users.

There are idea[1] but it is not implemented?

[1]: https://github.com/melpa/melpa/issues/2416



  reply	other threads:[~2020-10-12  2:10 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-08  1:37 Include leaf in Emacs distribution Naoya Yamashita
2020-10-08  9:00 ` Ergus
2020-10-08  9:22   ` Naoya Yamashita
2020-10-10 10:11     ` Eli Zaretskii
2020-10-11  5:24       ` Richard Stallman
2020-10-11  8:39         ` Naoya Yamashita
2020-10-11  9:52           ` Thibaut Verron
2020-10-11 16:50             ` Naoya Yamashita
2020-10-11 17:12               ` Thibaut Verron
2020-10-12  2:10                 ` Naoya Yamashita [this message]
2020-10-12 20:23                   ` Ergus via Emacs development discussions.
2020-10-11 17:02           ` Stefan Kangas
2020-10-11 16:51   ` Stefan Kangas
2020-10-12 20:53     ` Mingde (Matthew) Zeng
2020-10-11 17:22 ` Stefan Kangas
2020-10-12  1:35   ` Naoya Yamashita
2020-10-12 22:13     ` Stefan Kangas
2020-10-12 22:19       ` Qiantan Hong
2020-10-12 22:39       ` Caio Henrique
2020-10-13 13:23         ` Stefan Monnier
2020-10-13 14:14           ` Thibaut Verron
2020-10-13 14:29             ` Stefan Monnier
2020-10-13 15:29               ` Thibaut Verron
2020-10-18  9:32                 ` Phil Sainty
2020-10-13 15:25           ` Caio Henrique
2020-10-23  2:37             ` Naoya Yamashita
2020-10-23  3:41               ` John Wiegley
2020-10-23 14:33                 ` Stefan Monnier
2020-10-23 15:53                   ` Naoya Yamashita
2020-10-23 16:46                     ` Warnings in init files (was: Include leaf in Emacs distribution) Stefan Monnier
2020-10-23 18:11                     ` Include leaf in Emacs distribution T.V Raman
2020-10-23 18:41               ` Stefan Kangas
2020-10-23 20:04                 ` John Wiegley
2020-11-16  5:29                   ` Naoya Yamashita
2020-11-17  0:39                     ` John Wiegley
2020-11-20 11:04                       ` Naoya Yamashita
2020-11-20 11:29                         ` Pankaj Jangid
2020-11-20 15:44                         ` T.V Raman

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=20201012.111045.170746562384965042.conao3@gmail.com \
    --to=conao3@gmail.com \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=rms@gnu.org \
    --cc=spacibba@aol.com \
    --cc=thibaut.verron@gmail.com \
    /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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.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).