diff --git a/lib/ace/mode/behaviour/cstyle.js b/lib/ace/mode/behaviour/cstyle.js index 56a77581..dd432ea6 100644 --- a/lib/ace/mode/behaviour/cstyle.js +++ b/lib/ace/mode/behaviour/cstyle.js @@ -55,30 +55,32 @@ var CstyleBehaviour = function () { } else { return { text: '{}', - selection: [1,1] + selection: [1, 1] } } } else if (text == '}') { // This should do some matching checks var cursor = editor.getCursorPosition(); - var rightChar = session.doc.getLine(cursor.row).substring(cursor.column, cursor.column+1); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar == '}') { return { text: '', - selection: [1,1] + selection: [1, 1] } } } else if (text == "\n") { var cursor = editor.getCursorPosition(); - var rightChar = session.doc.getLine(cursor.row).substring(cursor.column, cursor.column+1); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar == '}') { var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column}); - - var indent = this.getNextLineIndent(state, session.doc.getLine(cursor.row).substring(0, session.doc.getLine(cursor.row).length-1), " "); + + var indent = this.getNextLineIndent(state, line.substring(0, line.length - 1), session.getTabString()); var next_indent = this.$getIndent(session.doc.getLine(openBracePos.row)); return { - text: '\n'+indent+'\n'+next_indent, - selection: [1,indent.length,1,indent.length] + text: '\n' + indent + '\n' + next_indent, + selection: [1, indent.length, 1, indent.length] } } } @@ -86,9 +88,11 @@ var CstyleBehaviour = function () { }, function (state, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected == '{') { - var rightChar = session.doc.getLine(range.start.row).substring(range.start.column+1, range.start.column+2); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar == '}') { - return new Range(range.start.row, range.start.column, range.start.row, range.end.column+1); + return new Range(range.start.row, range.start.column, + range.start.row, range.end.column + 1); } } return false; @@ -106,16 +110,17 @@ var CstyleBehaviour = function () { } else { return { text: '()', - selection: [1,1] + selection: [1, 1] } } } else if (text == ')') { // This should do some matching checks var cursor = editor.getCursorPosition(); - var rightChar = session.doc.getLine(cursor.row).substring(cursor.column, cursor.column+1); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar == ')') { return { text: '', - selection: [1,1] + selection: [1, 1] } } } @@ -123,9 +128,11 @@ var CstyleBehaviour = function () { }, function (state, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected == '(') { - var rightChar = session.doc.getLine(range.start.row).substring(range.start.column+1, range.start.column+2); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); if (rightChar == ')') { - return new Range(range.start.row, range.start.column, range.start.row, range.end.column+1); + return new Range(range.start.row, range.start.column, + range.start.row, range.end.column + 1); } } return false; @@ -151,9 +158,11 @@ var CstyleBehaviour = function () { }, function (state, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected == '"') { - var rightChar = session.doc.getLine(range.start.row).substring(range.start.column+1, range.start.column+2); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); if (rightChar == '"') { - return new Range(range.start.row, range.start.column, range.start.row, range.end.column+1); + return new Range(range.start.row, range.start.column, + range.start.row, range.end.column + 1); } } return false;