unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / 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 20:24:18 -0700	[thread overview]
Message-ID: <SJ0PR03MB545518ADED80E5BFB478CC13A2749@SJ0PR03MB5455.namprd03.prod.outlook.com> (raw)
In-Reply-To: <SJ0PR03MB54550CE65E19003962A19A9EA2779@SJ0PR03MB5455.namprd03.prod.outlook.com> (David Masterson's message of "Wed, 10 May 2023 16:56:35 -0700")

Wow, i need to proofread more...

David Masterson <dsmasterson@gmail.com> writes:

> 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 added 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 (put ivy-avy first) and say what
> will happen in both the demand and deferred 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 it 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. maybe I need :demand somewhere).

One thing I left out was that org-ac also depends on auto-complete-pcmp
making the :after more complicated -- namely does order make a
difference in how things should be loaded? 

-- 
David Masterson



  reply	other threads:[~2023-05-11  3:24 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
2023-05-11  3:24     ` David Masterson [this message]
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

  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=SJ0PR03MB545518ADED80E5BFB478CC13A2749@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.
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).