From c4d3d68a191828f6e85f9cdba3b3077317fcf5e6 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Mon, 28 Nov 2011 16:19:22 +0100 Subject: [PATCH] don't autoindent in object literal. fix #508 --- lib/ace/mode/javascript.js | 3 +-- lib/ace/mode/javascript_test.js | 12 ++++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/ace/mode/javascript.js b/lib/ace/mode/javascript.js index 38553837..41929c90 100644 --- a/lib/ace/mode/javascript.js +++ b/lib/ace/mode/javascript.js @@ -57,7 +57,6 @@ oop.inherits(Mode, TextMode); this.toggleCommentLines = function(state, doc, startRow, endRow) { var outdent = true; - var outentedRows = []; var re = /^(\s*)\/\//; for (var i=startRow; i<= endRow; i++) { @@ -96,7 +95,7 @@ oop.inherits(Mode, TextMode); } if (state == "start" || state == "regex_allowed") { - var match = line.match(/^.*[\{\(\[\:]\s*$/); + var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); if (match) { indent += tab; } diff --git a/lib/ace/mode/javascript_test.js b/lib/ace/mode/javascript_test.js index 1349eb1a..fc542d44 100644 --- a/lib/ace/mode/javascript_test.js +++ b/lib/ace/mode/javascript_test.js @@ -63,14 +63,14 @@ module.exports = { "test: toggle comment lines should prepend '//' to each line" : function() { var session = new EditSession([" abc", "cde", "fg"]); - var comment = this.mode.toggleCommentLines("start", session, 0, 1); + this.mode.toggleCommentLines("start", session, 0, 1); assert.equal(["// abc", "//cde", "fg"].join("\n"), session.toString()); }, "test: toggle comment on commented lines should remove leading '//' chars" : function() { var session = new EditSession(["// abc", "//cde", "fg"]); - var comment = this.mode.toggleCommentLines("start", session, 0, 1); + this.mode.toggleCommentLines("start", session, 0, 1); assert.equal([" abc", "cde", "fg"].join("\n"), session.toString()); }, @@ -85,14 +85,14 @@ module.exports = { "test: toggle comment on multiple lines with one commented line prepend '//' to each line" : function() { var session = new EditSession(["// abc", "//cde", "fg"]); - var comment = this.mode.toggleCommentLines("start", session, 0, 2); + this.mode.toggleCommentLines("start", session, 0, 2); assert.equal(["//// abc", "////cde", "//fg"].join("\n"), session.toString()); }, "test: toggle comment on a comment line with leading white space": function() { var session = new EditSession(["//cde", " //fg"]); - var comment = this.mode.toggleCommentLines("start", session, 0, 1); + this.mode.toggleCommentLines("start", session, 0, 1); assert.equal(["cde", " fg"].join("\n"), session.toString()); }, @@ -104,6 +104,10 @@ module.exports = { assert.equal(" ", this.mode.getNextLineIndent("start", "case 'juhu':", " ")); }, + "test: no auto indent in object literal" : function() { + assert.equal("", this.mode.getNextLineIndent("start", "{ 'juhu':", " ")); + }, + "test: no auto indent after opening brace in multi line comment" : function() { assert.equal("", this.mode.getNextLineIndent("start", "/*if () {", " ")); assert.equal(" ", this.mode.getNextLineIndent("comment", " abcd", " "));