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)]
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 2 (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.