GNU bug report logs - #11733
24.1; cperl indentation bugs

Previous Next

Package: emacs;

Reported by: Vincent Lefevre <vincent <at> vinc17.net>

Date: Mon, 18 Jun 2012 10:49:02 UTC

Severity: minor

Tags: confirmed

Found in versions 26.1, 24.1

Done: Harald Jörg <haj <at> posteo.de>

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 11733 in the body.
You can then email your comments to 11733 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#11733; Package emacs. (Mon, 18 Jun 2012 10:49:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Vincent Lefevre <vincent <at> vinc17.net>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 18 Jun 2012 10:49:02 GMT) Full text and rfc822 format available.

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

From: Vincent Lefevre <vincent <at> vinc17.net>
To: bug-gnu-emacs <at> gnu.org
Subject: 24.1; cperl indentation bugs
Date: Mon, 18 Jun 2012 12:45:20 +0200
The indentation in CPerl mode is buggy on sub, even with the default
configuration (emacs -Q). Open the following file:

----------------------------------------
#!/usr/bin/env perl
# -*- mode: cperl -*-

sub foo
  {
  }

sub bar
  {
  }
----------------------------------------

and hit the [TAB] key over the "sub bar" line. This line is indented
by 2 columns instead of being left on the first column. More generally
this happens on all subs except the first one.

[TAB] on the '{' of sub bar (line 9 of the script) gives a 4-column
indentation instead of 2, but this may be a consequence of the above
problem.

Other indentation bugs:

----------------------------------------
#!/usr/bin/env perl
# -*- mode: cperl -*-

while (<>)
  {
    m:^  \d+ p:
      or die;
    m:^  \d+ :
      or die;
  }
----------------------------------------

[TAB] on "or die;" gives:
  * a 4-column indentation instead of 6 for the 1st one,
  * a 8-column indentation instead of 6 for the 2nd one.

Note: my old Debian bug report about these indentation bugs:

  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=405684


In GNU Emacs 24.1.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.10)
 of 2012-06-15 on ypig
Windowing system distributor `The X.Org Foundation', version 11.0.11201902
Configured using:
 `configure '--prefix=/usr/local/emacs-24.1' '--enable-asserts''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: POSIX
  value of $LC_CTYPE: en_US.UTF-8
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: en_DK
  value of $LANG: POSIX
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  display-time-mode: t
  show-paren-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
<escape> x r e p o r t - b u <tab> <return>

Recent messages:
Loading /home/vlefevre/share/emacs/site-lisp/mutteditor.el (source)...done
Loading time...done
For information about GNU Emacs and the GNU system, type C-h C-a.

Load-path shadows:
None found.

Features:
(shadow sort gnus-util mail-extr warnings emacsbug message format-spec
rfc822 mml easymenu mml-sec mm-decode mm-bodies mm-encode mail-parse
rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mail-utils time cus-start cus-load paren
cc-styles cc-align cc-engine cc-vars cc-defs regexp-opt time-date
tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar
dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow
timer select scroll-bar mouse jit-lock font-lock syntax facemenu
font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan
thai tai-viet lao korean japanese hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces
cus-face files text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget hashtable-print-readable backquote
make-network-process dbusbind dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11733; Package emacs. (Tue, 19 Jun 2012 16:27:01 GMT) Full text and rfc822 format available.

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

From: Glenn Morris <rgm <at> gnu.org>
To: Vincent Lefevre <vincent <at> vinc17.net>
Cc: 11733 <at> debbugs.gnu.org
Subject: Re: bug#11733: 24.1; cperl indentation bugs
Date: Tue, 19 Jun 2012 12:23:23 -0400
Vincent Lefevre wrote:

> The indentation in CPerl mode is buggy on sub,

Here at Emacs, we are discouraged from changing cperl-mode (not that I
want to myself); see eg bugs 10934, 8802.

But upstream [1] doesn't appear to have changed it in 4 years, so you're
kind of stuck AFAICS.

[1] http://math.berkeley.edu/~ilya/software/emacs/




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11733; Package emacs. (Sat, 21 Sep 2019 00:52:01 GMT) Full text and rfc822 format available.

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

From: Stefan Kangas <stefan <at> marxist.se>
To: Vincent Lefevre <vincent <at> vinc17.net>
Cc: 11733 <at> debbugs.gnu.org
Subject: Re: bug#11733: 24.1; cperl indentation bugs
Date: Sat, 21 Sep 2019 02:50:55 +0200
Vincent Lefevre <vincent <at> vinc17.net> writes:

> The indentation in CPerl mode is buggy on sub, even with the default
> configuration (emacs -Q). Open the following file:
>
> ----------------------------------------
> #!/usr/bin/env perl
> # -*- mode: cperl -*-
>
> sub foo
>   {
>   }
>
> sub bar
>   {
>   }
> ----------------------------------------
>
> and hit the [TAB] key over the "sub bar" line. This line is indented
> by 2 columns instead of being left on the first column. More generally
> this happens on all subs except the first one.
>
> [TAB] on the '{' of sub bar (line 9 of the script) gives a 4-column
> indentation instead of 2, but this may be a consequence of the above
> problem.

I can reproduce this on Emacs 26.1.

> Other indentation bugs:
>
> ----------------------------------------
> #!/usr/bin/env perl
> # -*- mode: cperl -*-
>
> while (<>)
>   {
>     m:^  \d+ p:
>       or die;
>     m:^  \d+ :
>       or die;
>   }
> ----------------------------------------

I can reproduce this too.

Best regards,
Stefan Kangas




bug Marked as found in versions 26.1. Request was from Stefan Kangas <stefan <at> marxist.se> to control <at> debbugs.gnu.org. (Sat, 21 Sep 2019 00:53:02 GMT) Full text and rfc822 format available.

Added tag(s) confirmed. Request was from Stefan Kangas <stefan <at> marxist.se> to control <at> debbugs.gnu.org. (Sat, 21 Sep 2019 00:53:02 GMT) Full text and rfc822 format available.

Severity set to 'minor' from 'normal' Request was from Stefan Kangas <stefan <at> marxist.se> to control <at> debbugs.gnu.org. (Sat, 21 Sep 2019 00:53:02 GMT) Full text and rfc822 format available.

Reply sent to Harald Jörg <haj <at> posteo.de>:
You have taken responsibility. (Sat, 01 Jul 2023 22:51:01 GMT) Full text and rfc822 format available.

Notification sent to Vincent Lefevre <vincent <at> vinc17.net>:
bug acknowledged by developer. (Sat, 01 Jul 2023 22:51:01 GMT) Full text and rfc822 format available.

Message #22 received at 11733-done <at> debbugs.gnu.org (full text, mbox):

From: Harald Jörg <haj <at> posteo.de>
To: 11733-done <at> debbugs.gnu.org
Subject: Indentation has been fixed in the master branch.
Date: Sat, 01 Jul 2023 22:50:07 +0000
Eventually, the reworking of the indentation code allows to fix these
bugs (again, thanks for the clear recipes).

The first example will now be indented like this:
--------------------------------------------------
#!/usr/bin/env perl
# -*- mode: cperl -*-

sub foo
{
}

sub bar
{
}
--------------------------------------------------

This is in line with the Perl style guide
https://perldoc.perl.org/perlstyle.

The second example is a masterpiece of edge cases:
--------------------------------------------------
#!/usr/bin/env perl
# -*- mode: cperl -*-

while (<>)
  {
    m:^  \d+ p:
      or die;
    m:^  \d+ :
      or die;
  }
--------------------------------------------------
The strings 'm:' and 'p:' look like labels, and cperl-mode must take
extra measures to detect these situations.  This is now done.  When
indented line-by-line, cperl-mode will now the leave the indentation
unchanged.

cperl-mode.el from the repository works with Emacs versions 27 and
newer.

Therefore, I am declaring this bug "done".

-- 
Cheers,
haj




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 30 Jul 2023 11:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 277 days ago.

Previous Next


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