From 59138ec896618d730046fda7002d57eef02bd6a8 Mon Sep 17 00:00:00 2001
From: Marijn Haverbeke <marijnh@gmail.com>
Date: Wed, 16 Jul 2014 12:55:59 +0200
Subject: [PATCH] [javascript mode] Indent properly in case of function arg in
 wrapped arg list

---
 mode/javascript/javascript.js | 2 ++
 mode/javascript/test.js       | 6 ++++++
 2 files changed, 8 insertions(+)

diff --git a/mode/javascript/javascript.js b/mode/javascript/javascript.js
index 315674be7..fdb066eb1 100644
--- a/mode/javascript/javascript.js
+++ b/mode/javascript/javascript.js
@@ -298,6 +298,8 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
     var result = function() {
       var state = cx.state, indent = state.indented;
       if (state.lexical.type == "stat") indent = state.lexical.indented;
+      else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev)
+        indent = outer.indented;
       state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);
     };
     result.lex = true;
diff --git a/mode/javascript/test.js b/mode/javascript/test.js
index a9cc993d3..77cc695fe 100644
--- a/mode/javascript/test.js
+++ b/mode/javascript/test.js
@@ -128,6 +128,12 @@
      "  [keyword else]",
      "    [number 3];");
 
+  MT("indent_funarg",
+     "[variable foo]([number 10000],",
+     "    [keyword function]([def a]) {",
+     "  [keyword debugger];",
+     "};");
+
   MT("indent_below_if",
      "[keyword for] (;;)",
      "  [keyword if] ([variable foo])",
-- 
GitLab