Merge branch 'master' of github.com:github/atom into toggle-comments

This commit is contained in:
Nathan Sobo
2012-06-04 11:55:15 -06:00
13 changed files with 93 additions and 42 deletions

View File

@@ -810,7 +810,8 @@ class Editor extends View
@renderer.foldAll()
toggleFold: ->
@renderer.toggleFoldAtBufferRow(@getCursorBufferPosition().row)
row = @renderer.bufferPositionForScreenPosition(@getCursorScreenPosition()).row
@renderer.toggleFoldAtBufferRow(row)
foldSelection: -> @getSelection().fold()

View File

@@ -41,6 +41,9 @@ class Fold
isContainedByRange: (range) ->
range.start.row <= @startRow and @endRow <= range.end.row
isContainedByFold: (fold) ->
@isContainedByRange(fold.getBufferRange())
updateStartRow: (event) ->
{ newRange, oldRange } = event

View File

@@ -19,4 +19,4 @@ class Gutter extends View
@div {class: 'line-number'}, if row == lastScreenRow then '' else row + 1
lastScreenRow = row
@lineNumbers.width(editor.getLastScreenRow().toString().length * editor.charWidth)
@lineNumbers.width(editor.buffer.getLastRow().toString().length * editor.charWidth)

View File

@@ -55,7 +55,7 @@ class Renderer
@lineMap.bufferRowsForScreenRows(startRow, endRow)
foldAll: ->
for currentRow in [@buffer.getLastRow()..0]
for currentRow in [0..@buffer.getLastRow()]
[startRow, endRow] = @foldSuggester.rowRangeForFoldAtBufferRow(currentRow) ? []
continue unless startRow?
@@ -73,6 +73,11 @@ class Renderer
break
isFoldContainedByActiveFold: (fold) ->
for row, folds of @activeFolds
for otherFold in folds
return otherFold if fold != otherFold and fold.isContainedByFold(otherFold)
foldFor: (startRow, endRow) ->
_.find @activeFolds[startRow] ? [], (fold) ->
fold.startRow == startRow and fold.endRow == endRow
@@ -82,29 +87,30 @@ class Renderer
fold = new Fold(this, startRow, endRow)
@registerFold(fold)
bufferRange = new Range([startRow, 0], [endRow, @buffer.lineLengthForRow(endRow)])
oldScreenRange = @screenLineRangeForBufferRange(bufferRange)
unless @isFoldContainedByActiveFold(fold)
bufferRange = new Range([startRow, 0], [endRow, @buffer.lineLengthForRow(endRow)])
oldScreenRange = @screenLineRangeForBufferRange(bufferRange)
lines = @buildLineForBufferRow(startRow)
@lineMap.replaceScreenRows(oldScreenRange.start.row, oldScreenRange.end.row, lines)
newScreenRange = @screenLineRangeForBufferRange(bufferRange)
lines = @buildLineForBufferRow(startRow)
@lineMap.replaceScreenRows(oldScreenRange.start.row, oldScreenRange.end.row, lines)
newScreenRange = @screenLineRangeForBufferRange(bufferRange)
@trigger 'change', oldRange: oldScreenRange, newRange: newScreenRange, lineNumbersChanged: true
@trigger 'change', oldRange: oldScreenRange, newRange: newScreenRange, lineNumbersChanged: true
@trigger 'fold', bufferRange
fold
destroyFold: (fold) ->
@unregisterFold(fold.startRow, fold)
{ startRow, endRow } = fold
bufferRange = new Range([startRow, 0], [endRow, @buffer.lineLengthForRow(endRow)])
oldScreenRange = @screenLineRangeForBufferRange(bufferRange)
lines = @buildLinesForBufferRows(startRow, endRow)
@lineMap.replaceScreenRows(oldScreenRange.start.row, oldScreenRange.end.row, lines)
newScreenRange = @screenLineRangeForBufferRange(bufferRange)
unless @isFoldContainedByActiveFold(fold)
{ startRow, endRow } = fold
bufferRange = new Range([startRow, 0], [endRow, @buffer.lineLengthForRow(endRow)])
oldScreenRange = @screenLineRangeForBufferRange(bufferRange)
lines = @buildLinesForBufferRows(startRow, endRow)
@lineMap.replaceScreenRows(oldScreenRange.start.row, oldScreenRange.end.row, lines)
newScreenRange = @screenLineRangeForBufferRange(bufferRange)
@trigger 'change', oldRange: oldScreenRange, newRange: newScreenRange, lineNumbersChanged: true
@trigger 'unfold', bufferRange
@trigger 'change', oldRange: oldScreenRange, newRange: newScreenRange, lineNumbersChanged: true
destroyFoldsContainingBufferRow: (bufferRow) ->
folds = @activeFolds[bufferRow] ? []