GNU bug report logs - #46093
Shell-script mode formatting error eats half the page

Previous Next

Package: emacs;

Reported by: 積丹尼 Dan Jacobson <jidanni <at> jidanni.org>

Date: Mon, 25 Jan 2021 06:35:01 UTC

Severity: minor

Tags: confirmed, patch

Merged with 2910, 21244, 26217, 30170, 48193

Found in versions 25.0.95, 25.2

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

Bug is archived. No further changes may be made.

Full log


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

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: 積丹尼 Dan Jacobson <jidanni <at> jidanni.org>
Cc: 46093 <at> debbugs.gnu.org
Subject: Re: bug#46093: Shell-script mode formatting error eats half the page
Date: Wed, 27 Jan 2021 03:09:23 +0100
積丹尼 Dan Jacobson <jidanni <at> jidanni.org> writes:

> Here we observe lines severely shoved over due to Shell-script mode not
> recognizing the statement has terminated. emacs-version "27.1".
>
> $ cat x.sh
> set /home/$j/.adobe /home/$j/.macromedia && for i do if test -d $i; then rm -vr $i; fi; done
>                                                 echo these lines are now indented wrongly
>                                                 echo these lines are now indented wrongly for the rest of the file.
>                                                 echo There is no recovery.

Here's a simpler reproducer:

for i do; if test -d $i; then rm -vr $i; fi; done
    echo these lines are now indented wrongly
    echo these lines are now indented wrongly for the rest of the file.
    echo There is no recovery.

This indents correctly, though:

for i; do if test -d $i; then rm -vr $i; fi; done
echo these lines are now indented wrongly
echo these lines are now indented wrongly for the rest of the file.
echo There is no recovery.

(I moved the semicolon to before the "do", not after.  Which is
apparently the correct syntax according to

https://www.gnu.org/software/bash/manual/bash.html#Compound-Commands

for

    The syntax of the for command is:

    for name [ [in [words …] ] ; ] do commands; done

So Emacs seems to do the correct thing here; closing.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




This bug report was last modified 1 year and 221 days ago.

Previous Next


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