GNU bug report logs - #11314
24.1.50; Regression: incorrect Lisp indentation for `if' with `@@@@@@'

Previous Next

Package: emacs;

Reported by: "Drew Adams" <drew.adams <at> oracle.com>

Date: Mon, 23 Apr 2012 00:58:01 UTC

Severity: minor

Tags: confirmed

Merged with 24542

Found in versions 24.1.50, 25.1.50, 27.0.50

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 11314 in the body.
You can then email your comments to 11314 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#11314; Package emacs. (Mon, 23 Apr 2012 00:58:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to "Drew Adams" <drew.adams <at> oracle.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 23 Apr 2012 00:58:01 GMT) Full text and rfc822 format available.

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

From: "Drew Adams" <drew.adams <at> oracle.com>
To: <bug-gnu-emacs <at> gnu.org>
Subject: 24.1.50; Regression: incorrect Lisp indentation for `if' with `@@@@@@'
Date: Sun, 22 Apr 2012 17:56:10 -0700
emacs -Q
 
Type this into an Emacs Lisp buffer:
 
(if (alpha beta) C-j aaaaaa C-j bbbbbb
 
You get this:
 
(if (alpha beta)
    aaaaaa
  bbbbbb
 
That is correct.  bbbbbb is indented correctly.
 
Now do the same thing, using @@@@@@ instead of aaaaaa.  This is the
result - bbbbbb is indented incorrectly.
 
(if (alpha beta)
    @@@@@@
    bbbbbb
 
Yet @@@@@@ is a perfectly good symbol/variable name etc.
 
This regression was introduced in Emacs 22.
 

In GNU Emacs 24.1.50.1 (i386-mingw-nt5.1.2600)
 of 2012-04-19 on MARVIN
Bzr revision: 107968 monnier <at> iro.umontreal.ca-20120419220225-gijdcbfxuiqy5dhb
Windowing system distributor `Microsoft Corp.', version 5.1.2600
Configured using:
 `configure --with-gcc (4.6) --no-opt --enable-checking --cflags
 -ID:/devel/emacs/libs/libXpm-3.5.8/include
 -ID:/devel/emacs/libs/libXpm-3.5.8/src
 -ID:/devel/emacs/libs/libpng-dev_1.4.3-1/include
 -ID:/devel/emacs/libs/zlib-dev_1.2.5-2/include
 -ID:/devel/emacs/libs/giflib-4.1.4-1/include
 -ID:/devel/emacs/libs/jpeg-6b-4/include
 -ID:/devel/emacs/libs/tiff-3.8.2-1/include
 -ID:/devel/emacs/libs/gnutls-3.0.9/include
 -ID:/devel/emacs/libs/libiconv-1.13.1-1-dev/include
 -ID:/devel/emacs/libs/libxml2-2.7.8/include/libxml2'
 





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11314; Package emacs. (Tue, 24 Apr 2012 01:00:02 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: "Drew Adams" <drew.adams <at> oracle.com>
Cc: 11314 <at> debbugs.gnu.org
Subject: Re: bug#11314: 24.1.50;
	Regression: incorrect Lisp indentation for `if' with `@@@@@@'
Date: Mon, 23 Apr 2012 20:58:58 -0400
> Yet @@@@@@ is a perfectly good symbol/variable name etc.

FWIW, this is probably due to @ being special in the case of ,@, so if
we fix this, we should be careful not to reintroduce errors such as C-h v
trying to use "@foo" rather than "foo" when we're on ",@foo".


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11314; Package emacs. (Tue, 24 Apr 2012 01:23:02 GMT) Full text and rfc822 format available.

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

From: "Drew Adams" <drew.adams <at> oracle.com>
To: "'Stefan Monnier'" <monnier <at> iro.umontreal.ca>
Cc: 11314 <at> debbugs.gnu.org
Subject: RE: bug#11314: 24.1.50;
	Regression: incorrect Lisp indentation for `if' with `@@@@@@'
Date: Mon, 23 Apr 2012 18:21:22 -0700
 > > Yet @@@@@@ is a perfectly good symbol/variable name etc.
> 
> FWIW, this is probably due to @ being special in the case of ,@,

That was my guess too.

> so if we fix this, we should be careful not to reintroduce
> errors

Yes.  Except I hope you really mean "when", not "if".

> such as C-h v trying to use "@foo" rather than "foo" when
> we're on ",@foo".

Yes.

The fact that this is a regression might offer some hope (if you are the
optimistic sort): at one time it worked.

And `C-h v @foo' also works correctly in Emacs prior to Emacs 22.  And `C-h v'
picks up `@foo' as the default value no matter where the cursor is on the chars
of `@foo'.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11314; Package emacs. (Mon, 17 Sep 2012 00:05:01 GMT) Full text and rfc822 format available.

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

From: "Drew Adams" <drew.adams <at> oracle.com>
To: "'Stefan Monnier'" <monnier <at> iro.umontreal.ca>
Cc: 11314 <at> debbugs.gnu.org
Subject: RE: bug#11314: 24.1.50;
	Regression: incorrect Lisp indentation for `if' with `@@@@@@'
Date: Sun, 16 Sep 2012 17:02:51 -0700
ping





Added tag(s) confirmed. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Sun, 09 Feb 2014 04:36:01 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11314; Package emacs. (Fri, 01 Nov 2019 20:00:02 GMT) Full text and rfc822 format available.

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

From: Stefan Kangas <stefan <at> marxist.se>
To: "Drew Adams" <drew.adams <at> oracle.com>
Cc: 11314 <at> debbugs.gnu.org
Subject: Re: 24.1.50; Regression: incorrect Lisp indentation for `if' with
 `@@@@@@'
Date: Fri, 01 Nov 2019 20:59:15 +0100
found 11314 27.0.50
thanks

"Drew Adams" <drew.adams <at> oracle.com> writes:

> emacs -Q
>  
> Type this into an Emacs Lisp buffer:
>  
> (if (alpha beta) C-j aaaaaa C-j bbbbbb
>  
> You get this:
>  
> (if (alpha beta)
>     aaaaaa
>   bbbbbb
>  
> That is correct.  bbbbbb is indented correctly.
>  
> Now do the same thing, using @@@@@@ instead of aaaaaa.  This is the
> result - bbbbbb is indented incorrectly.
>  
> (if (alpha beta)
>     @@@@@@
>     bbbbbb
>  
> Yet @@@@@@ is a perfectly good symbol/variable name etc.
>  
> This regression was introduced in Emacs 22.

I can reproduce this on current master.

Best regards,
Stefan Kangas




bug Marked as found in versions 27.0.50. Request was from Stefan Kangas <stefan <at> marxist.se> to control <at> debbugs.gnu.org. (Fri, 01 Nov 2019 20:00:05 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11314; Package emacs. (Fri, 01 Nov 2019 20:45:02 GMT) Full text and rfc822 format available.

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

From: Andreas Schwab <schwab <at> linux-m68k.org>
To: Stefan Kangas <stefan <at> marxist.se>
Cc: 11314 <at> debbugs.gnu.org, Drew Adams <drew.adams <at> oracle.com>
Subject: Re: bug#11314: 24.1.50;
 Regression: incorrect Lisp indentation for `if' with `@@@@@@'
Date: Fri, 01 Nov 2019 21:44:48 +0100
On Nov 01 2019, Stefan Kangas wrote:

> found 11314 27.0.50
> thanks
>
> "Drew Adams" <drew.adams <at> oracle.com> writes:
>
>> emacs -Q
>>  
>> Type this into an Emacs Lisp buffer:
>>  
>> (if (alpha beta) C-j aaaaaa C-j bbbbbb
>>  
>> You get this:
>>  
>> (if (alpha beta)
>>     aaaaaa
>>   bbbbbb
>>  
>> That is correct.  bbbbbb is indented correctly.
>>  
>> Now do the same thing, using @@@@@@ instead of aaaaaa.  This is the
>> result - bbbbbb is indented incorrectly.
>>  
>> (if (alpha beta)
>>     @@@@@@
>>     bbbbbb
>>  
>> Yet @@@@@@ is a perfectly good symbol/variable name etc.
>>  
>> This regression was introduced in Emacs 22.
>
> I can reproduce this on current master.

That's because @ has the prefix syntax flag (for ,@).

Andreas.

-- 
Andreas Schwab, schwab <at> linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11314; Package emacs. (Fri, 01 Nov 2019 21:25:02 GMT) Full text and rfc822 format available.

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

From: Drew Adams <drew.adams <at> oracle.com>
To: Andreas Schwab <schwab <at> linux-m68k.org>, Stefan Kangas <stefan <at> marxist.se>
Cc: 11314 <at> debbugs.gnu.org
Subject: RE: bug#11314: 24.1.50; Regression: incorrect Lisp indentation for
 `if' with `@@@@@@'
Date: Fri, 1 Nov 2019 14:23:54 -0700 (PDT)
> >> (if (alpha beta)
> >>     @@@@@@
> >>     bbbbbb
> >>
> >> Yet @@@@@@ is a perfectly good symbol/variable name etc.
> >> This regression was introduced in Emacs 22.
> >
> > I can reproduce this on current master.
> 
> That's because @ has the prefix syntax flag (for ,@).

That explains the implementation bug, I guess.

But there's no backquote or comma here.
And `@@@@@@' is just a normal symbol.

Just as we don't treat comma the same inside
and outside backquote (we raise an error for
the latter), ideally we shouldn't treat @ the
same inside and outside backquote (symbol
syntax for the latter).

And presumably the only uses of @ inside
backquote that should lead to different
indentation would only be when @ follows
comma.




Forcibly Merged 11314 24542. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Mon, 31 Jan 2022 16:37:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 11 May 2024 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 5 days ago.

Previous Next


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