]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new user option 'sh-indent-statement-after-and'
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 12 May 2022 16:16:43 +0000 (18:16 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 12 May 2022 16:16:43 +0000 (18:16 +0200)
* lisp/progmodes/sh-script.el (sh-indent-statement-after-and): New
user option (bug#22645).
(sh-smie-sh-rules): Use it.

etc/NEWS
lisp/progmodes/sh-script.el

index 3bdc497f18afed03b87a7b184ab0cd4f14e563e0..e09834c05684f6aef35951a243936d87854e112e 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -799,6 +799,15 @@ so automatically.
 \f
 * Changes in Specialized Modes and Packages in Emacs 29.1
 
+** Shell Script Mode
+
+---
+*** New user option 'sh-indent-statement-after-and'.
+This controls how statements like the following are indented:
+
+     foo &&
+         bar
+
 ---
 *** New user option 'cperl-file-style'.
 This option determines the indentation style to be used.  It can also
index 9151fd0a340f32cd1caa637c479b303c57ac94c3..379224dbced32458e75e8e068c4957cc0b5e16d5 100644 (file)
@@ -641,7 +641,11 @@ implemented as aliases.  See `sh-feature'."
   :version "24.4"                       ; bash4 additions
   :group 'sh-script)
 
-
+(defcustom sh-indent-statement-after-and t
+  "How to indent statements following &&.
+If t, indent to the &&.  If nil, indent to the parent."
+  :type 'boolean
+  :version "29.1")
 
 (defcustom sh-leading-keywords
   '((bash sh-append sh
@@ -1990,7 +1994,9 @@ May return nil if the line should not be treated as continued."
                  (current-column)
                (smie-indent-calculate)))))
     (`(:before . ,(or "|" "&&" "||"))
-     (unless (smie-rule-parent-p token)
+     (when (and (not (smie-rule-parent-p token))
+                (or (not (equal token "&&"))
+                    sh-indent-statement-after-and))
        (smie-backward-sexp token)
        `(column . ,(+ (funcall smie-rules-function :elem 'basic)
                       (smie-indent-virtual)))))