GNU bug report logs -
#60832
[PATCH] sh-script.el: Use sh-indent-for-continuation to indent line continuations.
Previous Next
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
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 60832 <at> debbugs.gnu.org.
--
60832: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=60832
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
> From: Philippe Altherr <philippe.altherr <at> gmail.com>
> 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.
[Message part 3 (message/rfc822, inline)]
[Message part 4 (text/plain, inline)]
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
[Message part 5 (text/html, inline)]
[0001-For-line-continuations-use-sh-indent-for-continuatio.patch (application/x-patch, attachment)]
This bug report was last modified 2 years and 137 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.