On Mon, Dec 26, 2022 at 11:49 PM Milan Glacier <news@milanglacier.com> wrote:

>I'm afraid mode options will make this even more
>complicated.  And what's with that defvar?

use-package is really a magic. But nobody uses a blank `(use-package
foo)`, usually a simple and pracctical use-package call would be
something like this:

     (use-package foo
     :config (setq foo-1 nil)
     :init (setq foo-2 nil)
     :hook ((python-mode emacs-lisp-mode) . foo-mode))

which specifies the code to be evaluated before foo is loaded (:init
part), the code to be evaluated after foo is loaded (:config part), and
the hook related to this package, which expands to:

My expansion of that same form is larger and harder to read,
with condition-case and variables and stuff.  But it would seem
that the fluff overhead is constant, which is good.

So I get your point: with enough practice, it's easy to see the
primitives in use.
 
(I personally am not a fan of use-package, I don't think it brings any
thing new. Often I need to expand it to see if its behavior is expected,
then why shouldn't I just write plain setq, add-hook stuffs directly?)

Exactly.

João