]> git.eshelyaron.com Git - emacs.git/commitdiff
Offer non-aligned indentation in lists in js-mode (Bug#27503)
authorIngo Lohmar <i.lohmar@gmail.com>
Sat, 1 Jul 2017 11:09:20 +0000 (13:09 +0200)
committerIngo Lohmar <i.lohmar@gmail.com>
Mon, 3 Jul 2017 18:06:27 +0000 (20:06 +0200)
* lisp/progmodes/js.el (js--proper-indentation):
New customization option 'js-indent-align-list-continuation'.
Affects argument lists as well as arrays and object properties.
* test/manual/indent/js-indent-align-list-continuation-nil.js:
Test the change.

etc/NEWS
lisp/progmodes/js.el
test/manual/indent/js-indent-align-list-continuation-nil.js [new file with mode: 0644]

index 2afed2d2534bca63235964afd0b55dd6d790246e..a766642ef2211275d7fd463aa063dbb1f050e535 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -839,8 +839,15 @@ initialization files.
 ---
 ** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'.
 
+** JS mode
+
+---
+*** JS mode now sets 'comment-multi-line' to t.
+
 ---
-** JS mode now sets 'comment-multi-line' to t.
+*** New variable 'js-indent-align-list-continuation', when set to nil,
+will not align continuations of bracketed lists, but will indent them
+by the fixed width 'js-indent-level'.
 
 ** CSS mode
 
index bae9e52bf0fb570adacff4fe68de32132f2b9fda..e6ffe4d75a60879553101ed5e335a8e51ba8fc6a 100644 (file)
@@ -475,6 +475,11 @@ This applies to function movement, marking, and so on."
   :type 'boolean
   :group 'js)
 
+(defcustom js-indent-align-list-continuation t
+  "Align continuation of non-empty ([{ lines in `js-mode'."
+  :type 'boolean
+  :group 'js)
+
 (defcustom js-comment-lineup-func #'c-lineup-C-comments
   "Lineup function for `cc-mode-style', for C comments in `js-mode'."
   :type 'function
@@ -2092,7 +2097,8 @@ indentation is aligned to that column."
                  (switch-keyword-p (looking-at "default\\_>\\|case\\_>[^:]"))
                  (continued-expr-p (js--continued-expression-p)))
              (goto-char (nth 1 parse-status)) ; go to the opening char
-             (if (looking-at "[({[]\\s-*\\(/[/*]\\|$\\)")
+             (if (or (not js-indent-align-list-continuation)
+                     (looking-at "[({[]\\s-*\\(/[/*]\\|$\\)"))
                  (progn ; nothing following the opening paren/bracket
                    (skip-syntax-backward " ")
                    (when (eq (char-before) ?\)) (backward-list))
diff --git a/test/manual/indent/js-indent-align-list-continuation-nil.js b/test/manual/indent/js-indent-align-list-continuation-nil.js
new file mode 100644 (file)
index 0000000..383b253
--- /dev/null
@@ -0,0 +1,20 @@
+const funcAssignment = function (arg1,
+    arg2,
+    arg3) {
+    return { test: this,
+        which: "would",
+        align: "as well with the default setting"
+    };
+}
+
+function funcDeclaration(arg1,
+    arg2
+) {
+    return [arg1,
+        arg2];
+}
+
+// Local Variables:
+// indent-tabs-mode: nil
+// js-indent-align-list-continuation: nil
+// End: