Subject: bug#54551: show-paren-mode inconsistency

From: Eli Zaretskii <[email-masked]>
Date: Fri, 25 Mar 2022 09:47:21 +0300

> Date: Thu, 24 Mar 2022 22:48:35 +0000
> From: goncholden <[email-masked]>
> Cc: [email-masked]
> 
> Consider the following command
> 
> (setq initial-frame-alist '((width . 72) (height . 26)) ).
> 
> Would be instructive that when one puts the cursor in the space between (width . 72) and (height . 26), the entire (width . 72) (height . 26) would be highlighted.

Why only "(width . 72) (height . 26)" and not the entire setq
expression?

Or maybe I don't understand what you mean by "instructive", i.e. what
exactly would you like Emacs to show you and why?

show-paren-mode has a specific goal: to show you the matching
parenthesis in an unobtrusive way, and do that as you type as well as
when you move through the code.  That is the "instructive" role that
it takes up upon itself.  It sounds like you want something else,
which would then call for a different feature with different visuals
(parenthesized expressions tend to nest, so being "inside" one of them
means you are "inside" all of the outer ones, and displaying them
calls for a different technique than what show-paren does).

> But (setq show-paren-when-point-inside-paren t) does not do that.
> Can be very non-intuitive when debugging.

For debugging, I suggest that you use C-M-u.

> Also, if you put the cursor on the parenthesis following (height . 26), only (height . 26) gets highlighted, rather than the entire (height . 26) (height . 26).

What do you mean by "the entire (height . 26)"?  Did you try to set
show-paren-style to 'expression', and if not, does it do what you
want?