From: Stefan Monnier <monnier@iro.umontreal.ca>
To: help-gnu-emacs@gnu.org
Subject: Re: Enabling a globalized-minor-mode by default
Date: Thu, 10 Sep 2020 17:14:11 -0400 [thread overview]
Message-ID: <jwv1rj9gxba.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: 87pn6tmoti.fsf@gmail.com
> I'm trying to understand how to define a globalized minor mode that is
> enabled by default. My goal is to make this mode's keymap available
> with no configuration on the user's part, unless the user explicitly
> disables the minor mode.
[...]
> Now, if I:
>
> - byte-compile this file,
> - M-: (package-generate-autoloads "testautoload" default-directory)
> - emacs -Q -L .
> - M-: (load-file "testautoload-autoloads.el")
Loading an ELisp file should not affect the visible behavior of Emacs,
so according to that principle a global mode that's pre-enabled should
only ever exist if it's bundled with Emacs.
For the same kind of reasons merely installing a package should not
affect the visible behavior of Emacs.
[ And yes "affect the visible behavior" is not well defined, or at least
it needs to be tempered by some tolerated exceptions. For example,
it's considered normal for a package to add itself (via its autoloads)
to `auto-mode-alist`, which does have a visible impact on Emacs's
behavior. ]
> ;;;###autoload
> (progn
> (require 'cl-macs)
> (cl-eval-when (load eval)
> (when global-testautoload-mode
> (global-testautoload-mode 1))))
[ Please require `cl-lib` rather than `cl-macs`, because we want to be
free to move definitions between the various internal files of
`cl-lib`. ]
> Is that bad form somehow, or is that the way to go?
Yup.
> Admittedly, maybe forcing a globalized minor mode on users by default is
> bad form. For context, I am trying to make magit-file-mode work
> out-of-the-box, i.e. without users having to (1) (require 'anything) in
> their config or (2) customize global-magit-file-mode to t explicitly,
> which should be redundant because this is the default value.
`require` is definitely not needed here.
Only `(global-magit-file-mode 1)` needs to be added to the init file
(or do the equivalent via Customize) and it shouldn't be redundant
because t shouldn't be the default value ;-)
Stefan
next prev parent reply other threads:[~2020-09-10 21:14 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-10 19:09 Enabling a globalized-minor-mode by default Kévin Le Gouguec
2020-09-10 21:14 ` Stefan Monnier [this message]
2020-09-11 9:03 ` Kévin Le Gouguec
2020-09-11 15:03 ` Stefan Monnier
2020-09-12 10:01 ` Kévin Le Gouguec
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=jwv1rj9gxba.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--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).