all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Ihor Radchenko <yantar92@posteo.net>,
	Stefan Monnier <monnier@iro.umontreal.ca>
Cc: 64048@debbugs.gnu.org
Subject: bug#64048: 30.0.50; global-display-line-numbers-mode has no easy way to set modes where it is enabled
Date: Wed, 14 Jun 2023 14:58:36 +0300	[thread overview]
Message-ID: <83mt12uufn.fsf@gnu.org> (raw)
In-Reply-To: <87sfavqhn5.fsf@localhost> (message from Ihor Radchenko on Tue, 13 Jun 2023 19:36:14 +0000)

> From: Ihor Radchenko <yantar92@posteo.net>
> Cc: 64048@debbugs.gnu.org
> Date: Tue, 13 Jun 2023 19:36:14 +0000
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > (Btw, I don't think I understand the use of :predicate which you
> > proposed: it isn't documented as accepting a function, only nil, t, or
> > a list of modes.)
> 
> Hmm. You are right, I did not look far enough into the code.
> 
> Let me correct my initial suggestion:
> 
> (define-globalized-minor-mode global-display-line-numbers-mode
>   display-line-numbers-mode display-line-numbers--turn-on
>   :predicate t)

This change is probably harmless, but OTOH what does it give you that
the current code doesn't?  AFAIU, you still cannot customize the modes
where line numbers will be off.

IOW, :predicate is not a means for user customizations of the modes
where the minor mode will be turned on.  Or am I missing something?

> :predicate defines the default value of
> `global-display-line-numbers-modes' variable.

It does?  Where is this documented?

> The above code will not change the existing behaviour, except that
> `global-display-line-numbers-modes' will be accounted for, iff
> customized by the user.

Is this behavior documented anywhere?  What I see in the docs (both
the doc string and the ELisp manual) is that the argument of
:predicate determines _statically_ which modes will activate the minor
mode.  The variable created by :predicate can be used to query Emacs
which modes are those, but cannot be used to change which modes do and
which don't.

If this is not what happens, we have a major mis-documentation on our
hands.

> >> I recall multiple occasions when I tried hard to disable a global mode
> >> in some buffers, remembered that there is some special variable for it;
> >> just to find out that a specific global minor mode does not support it.
> >
> > The usual way of enabling a mode selectively is to enable the
> > non-global variant of the mode in a mode hook.  I'm sure you know it.
> 
> The use case I am talking about is enabling minor mode everywhere,
> except certain major modes. It is more tricky.
> 
> One can, of course, disable the minor mode selectively in some major
> modes from that major mode hooks, but it is surprisingly non-obvious
> approach.

You can either disable it selectively (which is very obvious to me,
FWIW), or you can selectively enable it.  Both approaches are not
rocket science, IMO.





  reply	other threads:[~2023-06-14 11:58 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-13 14:33 bug#64048: 30.0.50; global-display-line-numbers-mode has no easy way to set modes where it is enabled Ihor Radchenko
2023-06-13 15:50 ` Eli Zaretskii
2023-06-13 16:09   ` Ihor Radchenko
2023-06-13 16:49     ` Eli Zaretskii
2023-06-13 17:21       ` Ihor Radchenko
2023-06-13 18:19         ` Eli Zaretskii
2023-06-13 19:36           ` Ihor Radchenko
2023-06-14 11:58             ` Eli Zaretskii [this message]
2023-06-14 12:48               ` Ihor Radchenko
2023-06-17  7:46                 ` Eli Zaretskii
2023-06-17 18:30                   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-06-17 18:58                     ` Eli Zaretskii
2023-06-17 19:06                       ` Ihor Radchenko
2023-06-17 19:04                     ` Ihor Radchenko
2023-06-17 19:18                       ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83mt12uufn.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=64048@debbugs.gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=yantar92@posteo.net \
    /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.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.