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