Subject: bug#60832: closed (Re: bug#60832: Acknowledgement ([PATCH] sh-script.el: Use sh-indent-for-continuation to indent line continuations.))

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 02 Mar 2023 10:43:03 +0000

Your bug report

#60832: [PATCH] sh-script.el: Use sh-indent-for-continuation to indent line continuations.

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
60832: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=60832
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#60832: Acknowledgement ([PATCH] sh-script.el: Use sh-indent-for-continuation to indent line continuations.)
From: Eli Zaretskii <[email-masked]>
To: Philippe Altherr <[email-masked]>
Cc: [email-masked]
Date: Thu, 02 Mar 2023 12:42:13 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Philippe Altherr <[email-masked]>
> Date: Fri, 17 Feb 2023 16:21:36 +0100
> 
> Here is an updated patch against the current master branch.

Thanks, installed on master.

Please in the future accompany the changes with a ChangeLog-style
commit log messages (see CONTRIBUTE for details).  Also, the summary
in the Subject line cannot be longer than 78 characters (again
mentioned in CONTRIBUTE), otherwise our Git commit hooks reject the
patch, and I need to apply it by hand.

Subject: [PATCH] sh-script.el: Use sh-indent-for-continuation to indent line continuations.
From: Philippe Altherr <[email-masked]>
To: [email-masked]
Date: Sun, 15 Jan 2023 12:55:43 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

The variable sh-indent-for-continuation
<https://github.com/emacs-mirror/emacs/blob/77ca6aa56e3425c87861cab8abce52bee3697cf4/lisp/progmodes/sh-script.el#L1300>
is defined in sh-script.el as "How much to indent for a continuation
statement." but it is never used. In particular, the function
sh-smie--indent-continuation
<https://github.com/emacs-mirror/emacs/blob/77ca6aa56e3425c87861cab8abce52bee3697cf4/lisp/progmodes/sh-script.el#L2000>,
which indents line continuations, doesn't use it and instead uses
sh-basic-offset. The attached patch modifies
sh-smie--indent-continuation to use sh-indent-for-continuation instead of
sh-basic-offset.

I have tested the patch by adding the patched function
sh-smie--indent-continuation to my .emacs (in a (with-eval-after-load
'sh-script ...) statement).

Here are details of what changes on the example used in the description of
sh-indent-after-continuation
<https://github.com/emacs-mirror/emacs/blob/77ca6aa56e3425c87861cab8abce52bee3697cf4/lisp/progmodes/sh-script.el#L1965>.
In all cases I have used the following settings:

(setq sh-basic-offset 4)
(setq sh-indent-for-continuation '++)

   - With (setq sh-indent-after-continuation 'always), I get the following
   result with the unpatched function:

   for f \
       in a; do \
       toto; \
       done

   This looks wrong to me because it doesn't take into account my setting
   (setq sh-indent-for-continuation '++) for line continuations. With the
   patched function I get the expected result:

   for f \
           in a; do \
           toto; \
           done

   - With (setq sh-indent-after-continuation nil), I get the following
   result with the unpatched and the patched function:

   for f \
   in a; do \
       toto; \
   done

   This looks correct to me. My understanding is that with (setq
   sh-indent-after-continuation nil), line continuations are kind of ignored
   and thus the setting (setq sh-indent-for-continuation '++) should never
   intervene, which is also the case.

   - With (setq sh-indent-after-continuation t), I get the following result
   with the unpatched function:

   for f \
       in a; do \
       toto; \
       done

   With the patched function, I get the following result:

   for f \
           in a; do \
       toto; \
       done

   I think that's also what's expected with (setq
   sh-indent-for-continuation '++) but I'm not entirely sure as I don't fully
   understand how (setq sh-indent-after-continuation t) is supposed to work.

Overall, I'm pretty confident that the first change in my patch should be
done. It's what affects the setting (setq sh-indent-after-continuation
'always). I'm a bit less confident about the second change, which affects
the setting (setq sh-indent-after-continuation t).

Philippe