Paste indent normalization works with on lines w/ mixed indentation

Normalizing the indent no longer explodes when pasting on a line that has mixed tabs and spaces when the edit session is using hard tabs.
This commit is contained in:
Corey Johnson & Nathan Sobo
2012-12-06 11:53:57 -07:00
parent 9945c5ebbb
commit de5bd91055
3 changed files with 37 additions and 6 deletions

View File

@@ -124,10 +124,13 @@ class EditSession
@buffer.change([[bufferRow, 0], [bufferRow, currentIndentString.length]], newIndentString)
indentLevelForLine: (line) ->
if line.match(/^\t/)
line.match(/^\t*/)?[0].length
if match = line.match(/^[\t ]+/)
leadingWhitespace = match[0]
tabCount = leadingWhitespace.match(/\t/g)?.length ? 0
spaceCount = leadingWhitespace.match(/[ ]/g)?.length ? 0
tabCount + (spaceCount / @getTabLength())
else
line.match(/^\s*/)?[0].length / @getTabLength()
0
buildIndentString: (number) ->
if @softTabs

View File

@@ -238,11 +238,9 @@ class Selection
adjustIndentationForLine: (line, delta) ->
currentIndentLevel = @editSession.indentLevelForLine(line)
currentIndentString = @editSession.buildIndentString(currentIndentLevel)
desiredIndentLevel = Math.max(0, currentIndentLevel + delta)
desiredIndentString = @editSession.buildIndentString(desiredIndentLevel)
line.replace(new RegExp("^#{currentIndentString}"), desiredIndentString)
line.replace(/^[\t ]*/, desiredIndentString)
backspace: ->
if @isEmpty() and not @editSession.isFoldedAtScreenRow(@cursor.getScreenRow())