Subject: bug#68487: [PATCH] Make jump commands usable for all skeletons

From: Eli Zaretskii <[email-masked]>
Date: Sun, 28 Jan 2024 07:52:48 +0200

> From: Martin Marshall <[email-masked]>
> Cc: [email-masked]
> Date: Sat, 27 Jan 2024 16:48:52 -0500
> 
> Eli Zaretskii <[email-masked]> writes:
> > OK.  But after applying the patch on the master branch, I get this
> > while byte-compiling:
> >
> >   In toplevel form:
> >   expand.el:91:2: Error: Eager macro-expansion failure: (error "Eager macro-expansion skipped due to cycle:
> >       => (load \"expand.el\") => (macroexpand-all (define-skeleton expand-c-for-skeleton  )) => (macroexpand (define-skeleton  )) => (load \"skeleton.el\") => (load \"expand.el\")")
> >
> >   In toplevel form:
> >   skeleton.el:34:11: Error: Eager macro-expansion failure: (error "Eager macro-expansion skipped due to cycle:
> >       => (load \"expand.el\") => (macroexpand-all (define-skeleton expand-c-for-skeleton  )) => (macroexpand (define-skeleton  )) => (load \"skeleton.el\") => (load \"expand.el\")")
> >   Makefile:335: recipe for target `skeleton.elc' failed
> >   make[3]: *** [skeleton.elc] Error 1
> >   make[3]: *** Waiting for unfinished jobs....
> >   Makefile:335: recipe for target `expand.elc' failed
> >
> > Could you please DTRT to avoid these errors?
> 
> Sorry, that was due to my incorrect assumption that byte-compiling with
> "C-c C-f" would be equivalent to a full recompile.
> 
> I can fix it by deleting the sample skeleton (`expand-c-for-skeleton')
> from expand.el.  But even though it's just a sample template, there
> might be people using it.
> 
> Another option would be to join expand.el and skeleton.el into a single
> file, perhaps calling it "expand-skeleton.el".
> 
> What do you think is best?

Neither alternative sounds attractive, TBH.

Stefan, what are our facilities to avoid mutual recursion like that?
Put the common stuff on a separate file, perhaps?

Thanks.