diff --git a/src/app/editor.coffee b/src/app/editor.coffee index ffdba9736..51d5a9a9e 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -216,7 +216,6 @@ class Editor extends View @updateLines() scrollTop = @verticalScrollbar.scrollTop() @scrollView.scrollTop(scrollTop) - @gutter.scrollTop(scrollTop) @scrollView.on 'scroll', => if @scrollView.scrollLeft() == 0 @@ -268,6 +267,8 @@ class Editor extends View @firstRenderedScreenRow = @getFirstVisibleScreenRow() @lastRenderedScreenRow = @getLastVisibleScreenRow() + @gutter.renderLineNumbers(@firstRenderedScreenRow, @lastRenderedScreenRow) + @insertLineElements(0, @buildLineElements(@firstRenderedScreenRow, @lastRenderedScreenRow)) @lines.css('padding-top', @firstRenderedScreenRow * @lineHeight) @lines.css('padding-bottom', (@getLastScreenRow() - @lastRenderedScreenRow) * @lineHeight) @@ -276,6 +277,8 @@ class Editor extends View firstVisibleScreenRow = @getFirstVisibleScreenRow() lastVisibleScreenRow = @getLastVisibleScreenRow() + @gutter.renderLineNumbers(firstVisibleScreenRow, lastVisibleScreenRow) + if firstVisibleScreenRow > @firstRenderedScreenRow @removeLineElements(@firstRenderedScreenRow, firstVisibleScreenRow - 1) @lines.css('padding-top', firstVisibleScreenRow * @lineHeight) @@ -331,7 +334,6 @@ class Editor extends View @renderer = new Renderer(@buffer, { maxLineLength: @calcMaxLineLength(), tabText: @tabText }) @renderLines() if @attached - @gutter.renderLineNumbers() @loadEditSessionForBuffer(@buffer) @@ -392,7 +394,7 @@ class Editor extends View handleRendererChange: (e) -> { oldRange, newRange } = e unless newRange.isSingleLine() and newRange.coversSameRows(oldRange) - @gutter.renderLineNumbers(@getScreenLines()) + @gutter.renderLineNumbers(@getFirstVisibleScreenRow(), @getLastVisibleScreenRow()) @compositeCursor.updateBufferPosition() unless e.bufferChanged @@ -515,8 +517,8 @@ class Editor extends View bufferRangeForScreenRange: (range) -> @renderer.bufferRangeForScreenRange(range) - bufferRowsForScreenRows: -> - @renderer.bufferRowsForScreenRows() + bufferRowsForScreenRows: (startRow, endRow) -> + @renderer.bufferRowsForScreenRows(startRow, endRow) screenPositionFromMouseEvent: (e) -> { pageX, pageY } = e diff --git a/src/app/renderer.coffee b/src/app/renderer.coffee index 8cff94593..af48284ea 100644 --- a/src/app/renderer.coffee +++ b/src/app/renderer.coffee @@ -48,8 +48,8 @@ class Renderer getLines: -> @lineMap.linesForScreenRows(0, @lineMap.lastScreenRow()) - bufferRowsForScreenRows: -> - @lineMap.bufferRowsForScreenRows() + bufferRowsForScreenRows: (startRow, endRow) -> + @lineMap.bufferRowsForScreenRows(startRow, endRow) createFold: (bufferRange) -> bufferRange = Range.fromObject(bufferRange)