GNU bug report logs - #21154
24.5.50; LaTeX mode complains about mismatched parentheses on end commands

Previous Next

Package: emacs;

Reported by: Jeff Clough <jvc <at> ijmp.net>

Date: Wed, 29 Jul 2015 06:08:01 UTC

Severity: normal

Found in version 24.5.50

Full log


Message #14 received at 21154 <at> debbugs.gnu.org (full text, mbox):

From: Marcin Borkowski <mbork <at> mbork.pl>
To: Jeff Clough <jvc <at> ijmp.net>
Cc: 21154 <at> debbugs.gnu.org
Subject: Re: bug#21154: 24.5.50;
 LaTeX mode complains about mismatched parentheses on end commands
Date: Fri, 06 May 2016 14:56:50 +0200
On 2016-05-02, at 12:32, Marcin Borkowski <mbork <at> mbork.pl> wrote:

> On 2016-04-30, at 14:13, Marcin Borkowski <mbork <at> mbork.pl> wrote:
>
>> On 2015-07-28, at 20:43, Jeff Clough <jvc <at> ijmp.net> wrote:
>>
>>> When writing LaTeX, typing the closing curly brace of an end
>>> command (\end{document} for instance) causes a "Mismatched parentheses"
>>> complaint to appear in the minibuffer, even when this seems to be false.
>>>
>>> Steps to reproduce:
>>>
>>> Create a new ".tex" file with the following contents (note the missing
>>> curly brace at the very end...
>>>
>>> \documentclass{article}
>>> \begin{document}
>>> \end{document
>>>
>>> Watch the minibuffer, type the closing curly brace, and witness the
>>> complaint. The only ever appears to happen on an end command, and it
>>> happens on every single end command no matter where it appears.
>>
>> Confirmed on GNU Emacs 25.1.50.9 (commit a3b46e0).  I'll try to
>> investigate it.
>
> Here's my conjecture: the problematic message is displayed by
> `blink-matching-open'.  After cursory examination, it seems that the
> problem is caused by the fact that `forward-sexp-function' in tex-mode
> is trying to be smart and jumps to the beginning of the environment when
> after "\end{...}".  Since there is no opening brace there,
> `blink-matching-open' thinks there's a mismatch.
>
> I'll try to come up with a patch.
>
> Incidentally, AUC-TeX does not have this problem.

OK, so it seems a tad harder than I thought.  I mean, making a patch
that works is easy; making a patch that works _and_ doesn't break
anything else may be slightly tricky.

My proposal is to temporarily bind `forward-sexp-function' to nil in
`blink-matching-open' so that it finds the opening brace correctly.
(Effectively, making `forward-sexp' fall back to `scan-sexps'.)  Could
anyone imagine a situation where this would break something?  There
doesn't seem to exist a lot of modes in core Emacs which set
`forward-sexp-function' to a non-nil value, so I may just look at all
occurences of that variable in the codebase if that is reasonable.

Best,

-- 
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University




This bug report was last modified 9 years and 124 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.