unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
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




  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).