diff --git a/src/app/edit-session.coffee b/src/app/edit-session.coffee index 1813a7655..3460aecd4 100644 --- a/src/app/edit-session.coffee +++ b/src/app/edit-session.coffee @@ -210,6 +210,13 @@ class EditSession isFoldedAtScreenRow: (screenRow) -> @lineForScreenRow(screenRow).fold? + autoIndentTextAfterBufferPosition: (text, bufferPosition) -> + return { text } unless @autoIndent + @languageMode.autoIndentTextAfterBufferPosition(text, bufferPosition) + + autoOutdent: -> + @languageMode.autoOutdentText() + toggleLineCommentsInRange: (range) -> @languageMode.toggleLineCommentsInRange(range) diff --git a/src/app/language-mode.coffee b/src/app/language-mode.coffee index 7556a76aa..313e2cc95 100644 --- a/src/app/language-mode.coffee +++ b/src/app/language-mode.coffee @@ -48,6 +48,18 @@ class LanguageMode else null + autoIndentTextAfterBufferPosition: (text, bufferPosition) -> + { row, column} = bufferPosition + state = @stateForRow(row) + lineBeforeCursor = @buffer.lineForRow(row)[0...column] + if text[0] == "\n" + indent = @aceMode.getNextLineIndent(state, lineBeforeCursor, @tabText) + text = text[0] + indent + text[1..] + else if @aceMode.checkOutdent(state, lineBeforeCursor, text) + shouldOutdent = true + + {text, shouldOutdent} + handleBufferChange: (e) -> oldRange = e.oldRange.copy() newRange = e.newRange.copy() diff --git a/src/app/selection.coffee b/src/app/selection.coffee index ae36e2ca7..673e305d3 100644 --- a/src/app/selection.coffee +++ b/src/app/selection.coffee @@ -197,18 +197,7 @@ class Selection @cursor.setBufferPosition([range.end.row + 1, 0]) autoIndentText: (text) -> - if @editSession.autoIndent - mode = @editSession.getCurrentMode() - row = @cursor.getCurrentScreenRow() - state = @editSession.stateForScreenRow(row) - lineBeforeCursor = @cursor.getCurrentBufferLine()[0...@cursor.getBufferPosition().column] - if text[0] == "\n" - indent = mode.getNextLineIndent(state, lineBeforeCursor, @editSession.tabText) - text = text[0] + indent + text[1..] - else if mode.checkOutdent(state, lineBeforeCursor, text) - shouldOutdent = true - - {text, shouldOutdent} + @editSession.autoIndentTextAfterBufferPosition(text, @cursor.getBufferPosition()) autoOutdentText: -> screenRow = @cursor.getCurrentScreenRow()