help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

`cl-macs' [was: about keysee]


From: Drew Adams
Subject: `cl-macs' [was: about keysee]
Date: Sun, 11 Dec 2022 17:09:42 +0000

> >> For that, you can just use `M-x load-library' to load
> >> `cl-macs.el' and `M-x load-file to load `sortie.el'
> >> and then `keysee.el'.
> 
> You should never need to load/require explicitly `cl-macs`.
> Instead you should load/require `cl-lib` (which will then load cl-macs
> and other parts of cl-lib as/when needed).
> If you need to manually load `cl-macs` there's probably a bug somewhere.

`cl-macs' is autoloaded by `cl-lib'/`cl-loaddefs'.
So you don't need to load it explicitly if you
instead load `cl-lib'.  Of course.

But there's no need to load `cl-lib' or `cl', if
all you want is a macro from `cl-macs'.  Keysee
uses just 2 macros, nothing else from `cl*', and
both are in `cl-macs'.

Occam says "Just pull in what you really need."

(Same thing applies to a function definition,
but macros are often needed only when compiling,
in which case requiring them only at compile
time doesn't add libraries to your session.)

It's not about _needing_ to load `cl-macs'.  It's
about needing _only_ `cl-macs', and _not_ all of
`cl-lib'.  (And for older Emacs, not all of `cl'.)

If you just need a macro then you just need to
load the file that defines it (unless the macro 
definition needs some other file, of course).

Or to use your language, "You should never need to
load/require explicitly" cl-lib if all you need is
available from just cl-macs.  No?

Why should using `keysee' require you to also add
`cl-lib' to your session?  That's overreach.  I'd
sooner code without using something as simple as
`cl-case' than oblige someone to load `cl-lib'
just because I've used `cl-case'.

[And yes, things like `case' should just be part
of Emacs (just as `push' is).  And yes, `pcase'
is overkill for the simple variable-value case.]

[Plus, things have changed in `cl*' world over the
years.  What's there, and where, for older Emacs
can differ from what's there, and where, for more
recent releases.  Libraries that are usable with
multiple releases don't necessarily follow a "do
this" injunction that makes sense only for some
later releases.]

<<attachment: winmail.dat>>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]