Subject: Re: bug#50895: 28.0.50; show-paren-mode is distracting in some modes

From: Dmitry Gutov <[email-masked]>
Date: Wed, 29 Sep 2021 23:02:03 +0300

On 29.09.2021 21:01, Lars Ingebrigtsen wrote:
> Jim Porter <[email-masked]> writes:
> 
>> Perhaps something akin to `font-lock-global-modes'? The help text for
>> that says:
>>
>>> If nil, means no modes have Font Lock mode automatically turned on.
>>> If t, all modes that support Font Lock mode have it automatically turned on.
>>> If a list, it should be a list of ‘major-mode’ symbol names for
>>> which Font Lock
>>> mode should be automatically turned on.  The sense of the list is
>>> negated if it
>>> begins with ‘not’.
> 
> Ah, right -- I thought I remembered that we had some kind of
> functionality for minor modes like this, but couldn't remember the
> specifics.

Unlike font-lock-global-mode, it seems in this case the code will be 
checking show-paren-global-modes at runtime (inside show-paren-function, 
I guess).

The check should special-case buffer-local values of show-paren-mode, so 
it's still possible to enable show-paren-local-mode in buffers where 
show-paren-mode is disabled via the new variable.

>> Then the default value for `show-paren-global-modes' could be
>> `(prog-mode)' or `(prog-mode text-mode)', or even `(not
>> special-mode)', depending on one's opinions about whether
>> `show-paren-mode' makes sense for prose. That would cover both this
>> bug as well as providing an easy way for users to customize the major
>> modes where `show-paren-mode' is enabled (this is already possible
>> with `show-paren-local-mode', but it'd be a bit simpler with
>> `show-paren-global-modes').
> 
> Yes, that makes sense to me.

The new var, if we add it now, should probably be just t by default.

To avoid changing the behavior for those who customized show-paren-mode 
for many years, and yet allow an easy customization point for others who 
can by annoyed with the change.

I don't know how to avoid changing the behavior for existing users of 
this mode, unless we make the variable itself take different values (can 
we?), and have it used instead of adding show-paren-global-modes.