diff --git a/lib/ace/edit_session.js b/lib/ace/edit_session.js index 36de153c..c022dd04 100644 --- a/lib/ace/edit_session.js +++ b/lib/ace/edit_session.js @@ -48,7 +48,7 @@ var Document = require("ace/document").Document; var NO_CHANGE_DELTAS = {}; var EditSession = function(text, mode) { - this.modified = true; + this.$modified = true; this.selection = new Selection(this); this.$breakpoints = []; @@ -294,7 +294,7 @@ var EditSession = function(text, mode) { var len = lines[i].length; longestLine = Math.max(longestLine, len); - lines[i].replace("\t", function(m) { + lines[i].replace(/\t/g, function(m) { len += tabSize-1; return m; }); @@ -512,7 +512,7 @@ var EditSession = function(text, mode) { }; this.indentRows = function(startRow, endRow, indentString) { - indentString = indentString.replace("\t", this.getTabString()); + indentString = indentString.replace(/\t/g, this.getTabString()); for (var row=startRow; row<=endRow; row++) { this.insert({row: row, column:0}, indentString); } diff --git a/lib/ace/test/edit_session_test.js b/lib/ace/test/edit_session_test.js index 4298df3a..c5f76b9b 100644 --- a/lib/ace/test/edit_session_test.js +++ b/lib/ace/test/edit_session_test.js @@ -242,6 +242,27 @@ var Test = { undoManager.redo(); assert.equal(session.getValue(), ["1", "", "ad"].join("\n")); + }, + + "test get longest line" : function() { + var session = new EditSession(["12"]); + session.setTabSize(4); + assert.equal(session.getWidth(), 2); + assert.equal(session.getScreenWidth(), 2); + + session.doc.insertNewLine(0); + session.doc.insertLines(1, ["123"]); + assert.equal(session.getWidth(), 3); + assert.equal(session.getScreenWidth(), 3); + + session.doc.insertNewLine(0); + session.doc.insertLines(1, ["\t\t"]); + assert.equal(session.getWidth(), 3); + assert.equal(session.getScreenWidth(), 8); + + session.setTabSize(2); + assert.equal(session.getWidth(), 3); + assert.equal(session.getScreenWidth(), 4); } };