all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: David Masterson <dsmasterson@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: help-gnu-emacs@gnu.org
Subject: Re: use-package :after ??
Date: Wed, 10 May 2023 16:56:35 -0700	[thread overview]
Message-ID: <SJ0PR03MB54550CE65E19003962A19A9EA2779@SJ0PR03MB5455.namprd03.prod.outlook.com> (raw)
In-Reply-To: <83fs87c8wg.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 08 May 2023 15:19:59 +0300")

Hi Eli,

I'm still confused about where the problem is, but I'll try to explain.

Eli Zaretskii <eliz@gnu.org> writes:

>> From: David Masterson <dsmasterson@gmail.com>
>> Date: Sun, 07 May 2023 17:05:57 -0700
>> 
>> This might be a documentation problem...

I have a fairly lengthy .emacs (probably nowhere near as complex as
yours) that I've setup use-package to speed up starting Emacs.  I've
(mostly) alphabetized my packages and use-package them in sequence.
I've set to deferred loading and I'm using :after to get subpackages to
load when the main package loads (ie: org-ac <- org).

My current problem is that org-ac is not loading after first using org
even though I've the :after flag on org-ac.  If I hand load og-ac,
everthing is fine.

>> I'm not sure I understand ":after" (and a few other related things) in
>> use-package.  The info docs talk about it ensuring that the current
>> package is loaded after the other listed packages, but it's not quite
>> explicit (to me) about what that means.  I interpret it in two possible
>> ways:

The key section is 3.5 in use-package infodoc.

>> 1. If any of the listed packages are not loaded currently, then the
>> current package will not be loaded. Period.
>> 2. #1 + "magic" will be done to ensure that, once the listed packages
>> are loaded, the current package will be (auto?) loaded.
>
> Which parts of the documentation make the answer to this question less
> than obvious?  There should be no need to expand the use-package
> macros to understand what it is doing; just reading the documentation
> should be enough (and it is for me, FWIW).

Section 3.1 talks about load and autoload, but could be extended to talk
about how use-package uses autoload to make things happen -- at least by
mentioning what use-package things (like :con fig) will happen at
autoload versus when the use-package is called.

In section 3.5, the first sentence talks about "configure", but
shouldn't it really be "load and configure"?  Also, the example is not
really good because it says that "‘:after’ is not strictly necessary" in
this case.  Better to reverse it and say what will happen in both the
demand and defered cases (I don't use it, but I guess this should also
be done in 3.4 and 3.6). 

>> My goal is to organize my .emacs loading of 25+ packages to only load if
>> needed.  That means (almost) all packages are deferred at startup and
>> will load itself and subpackages (minor modes, etc.) when I try to call
>> the package.  This is what I hoped :after was for.
>
> AFAIU, :after is not about deferral, it's about the conditions to
> load.  use-package has other features for deferral, like :defer and
> use-package-always-defer.
>
> And for loading when needed you have autoloads, of course.

Yes, :after is about when to load.  I'm looking to figure out why org-ac
didn't load when I needed for org. I need more time to play with it.

>> Can someone advise on the proper use of ":after" and how to get
>> appropriate subpackages to also load when the main package is loaded.
>> For instance:
>> 
>> (use-package org-ac :after org)
>> (use-package org)
>
> What is unclear or not self-evident about the above?

From the macroexpand, I now understand some of the "magic" of autoload.
I'm still missing how the :config (etc.) happens after the autoload to
ensure that the package is configured.  That's important in helping me
look for side-effects in the :config that didn't work with autoload
(ie. I need :demand somewhere).

-- 
David Masterson



  reply	other threads:[~2023-05-10 23:56 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-08  0:05 use-package :after ?? David Masterson
2023-05-08  2:44 ` Ruijie Yu via Users list for the GNU Emacs text editor
2023-05-08  4:05   ` David Masterson
2023-05-08  4:25     ` Ruijie Yu via Users list for the GNU Emacs text editor
2023-05-08  5:20       ` David Masterson
2023-05-08 12:19 ` Eli Zaretskii
2023-05-10 23:56   ` David Masterson [this message]
2023-05-11  3:24     ` David Masterson
2023-05-11  6:14       ` Eli Zaretskii
2023-05-11 21:24         ` David Masterson
2023-05-12  1:18           ` Ruijie Yu via Users list for the GNU Emacs text editor
2023-05-12  6:33             ` Eli Zaretskii
2023-05-12  6:38               ` Emanuel Berg
2023-05-12  5:59           ` Eli Zaretskii
2023-05-12  6:54             ` David Masterson
2023-05-12  7:22               ` Eli Zaretskii
2023-05-15  6:03                 ` David Masterson
2023-05-15 11:36                   ` Eli Zaretskii
2023-05-15 22:19                     ` David Masterson
2023-05-16 16:16                       ` Eli Zaretskii
     [not found]                 ` <87pm72m8rc.fsf@penguin>
2023-05-15  6:16                   ` David Masterson
2023-05-15 11:42                     ` Eli Zaretskii
2023-05-15 22:27                       ` David Masterson
2023-05-16 16:19                         ` Eli Zaretskii
2023-05-16 20:44                           ` David Masterson
2023-05-17  1:40                             ` David Masterson
2023-05-17 11:42                             ` Eli Zaretskii
2023-05-17 20:30                               ` David Masterson
2023-05-18 10:36                                 ` Eli Zaretskii
2023-05-18 12:41                                   ` Lynn Winebarger
2023-05-19  2:40                                     ` David Masterson
2023-05-19  3:03                                   ` David Masterson
2023-05-11  5:54     ` Eli Zaretskii
2023-05-11 22:04       ` David Masterson
2023-05-12  6:14         ` Eli Zaretskii
2023-05-12  6:31           ` Emanuel Berg
2023-05-12  6:56           ` David Masterson

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=SJ0PR03MB54550CE65E19003962A19A9EA2779@SJ0PR03MB5455.namprd03.prod.outlook.com \
    --to=dsmasterson@gmail.com \
    --cc=eliz@gnu.org \
    --cc=help-gnu-emacs@gnu.org \
    /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.