Subject: bug#11982: 24.1.50; (Contains ERT Test) show-paren-mode doesn't work in C comments if there's a quote between the parenthesis (affects c-mode and modes derived from it)

From: Alan Mackenzie <[email-masked]>
Date: 25 Aug 2019 14:10:58 -0000

Hello, Vincent and Noam.

In article <[email-masked]> you wrote:
> On 2019-08-22 11:05:04 -0400, Noam Postavsky wrote:
>> I can reproduce up to 25.3, but it seems to be fixed in 26.1.

> No, not fixed in 26.1, where this depends on some context.

This "context" is a syntax-table text property on the apostrophe which
"neutralises" it's normal string syntax.  Without this text property,
the apostrophe, a string opener, breaks the association of the two
parentheses.

The code which applies and removes these syntax-table text properties is
somewhat involved.  I believe it is working correctly in the master
branch, but wasn't in Emacs-26.

> This is rather random, but here's a way to reproduce the
> bug in Debian:

> 1. emacs-gtk -Q foo.c
>    (where foo.c does not exist)

> 2. Paste "// Comments are good (aren't they?)"

For some value of "paste".  Inserting the text on a Linux tty with the GPM
mouse utility (in 26.1) causes the text property to be correctly set.
Killing the entire line with C-k, followed by yanking it with C-y leaves
the text property unset (again in 26.1).

> 3. Type C-M-p

> I get an error:

> forward-list: Scan error: "Unbalanced parentheses", 35, 1

> This problem does not occur without the apostrophe.

No.  The apostrophe is a "string opener", see above.  It's normal use is
to delimit character constants, as:

    char foo = 'F';

> -- 
> Vincent Lefèvre <[email-masked]> - Web: <https://www.vinc17.net/>
> 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
> Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)

-- 
Alan Mackenzie (Nuremberg, Germany).