Move autoIndent code into LanguageMode

This commit is contained in:
Nathan Sobo
2012-06-13 16:12:51 -06:00
parent 4149cf11de
commit fc72f39342
3 changed files with 20 additions and 12 deletions

View File

@@ -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)

View File

@@ -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()

View File

@@ -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()