From 04dbeafb4dc224041670045bce08d607f2b2bafa Mon Sep 17 00:00:00 2001
From: Marijn Haverbeke <marijnh@gmail.com>
Date: Mon, 5 Jan 2015 17:56:46 +0100
Subject: [PATCH] [javascript mode] Also look at following text to determine
 continued statement

Issue #3015
---
 mode/javascript/javascript.js | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/mode/javascript/javascript.js b/mode/javascript/javascript.js
index fac8d5776..93df06d15 100644
--- a/mode/javascript/javascript.js
+++ b/mode/javascript/javascript.js
@@ -600,6 +600,12 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
     if (type == "if") return cont(expression, comprehension);
   }
 
+  function isContinuedStatement(state, textAfter) {
+    return state.lastType == "operator" || state.lastType == "," ||
+      isOperatorChar.test(textAfter.charAt(0)) ||
+      /[,.]/.test(textAfter.charAt(0));
+  }
+
   // Interface
 
   return {
@@ -651,7 +657,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
       else if (type == "form" && firstChar == "{") return lexical.indented;
       else if (type == "form") return lexical.indented + indentUnit;
       else if (type == "stat")
-        return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? statementIndent || indentUnit : 0);
+        return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);
       else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false)
         return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit);
       else if (lexical.align) return lexical.column + (closing ? 0 : 1);
-- 
GitLab