Invalidate empty lines proceeding a change event

The indent guide on empty lines will now be updated when
the non-empty line preceeding the empty lines is updated.
This commit is contained in:
Kevin Sawicki
2013-02-19 16:36:13 -08:00
parent 101b1aba12
commit 27f44fbfd7
2 changed files with 26 additions and 0 deletions

View File

@@ -1849,6 +1849,20 @@ describe "Editor", ->
expect(editor.renderedLines.find('.line:eq(12) .indent-guide').length).toBe 0
describe "when the indentation level on a line before an empty line is changed", ->
it "updates the indent guide on the empty line", ->
editor.attachToDom()
config.set("editor.showIndentGuide", true)
expect(editor.renderedLines.find('.line:eq(10) .indent-guide').length).toBe 1
expect(editor.renderedLines.find('.line:eq(10) .indent-guide').text()).toBe ' '
editor.setCursorBufferPosition([9])
editor.indentSelectedRows()
expect(editor.renderedLines.find('.line:eq(10) .indent-guide').length).toBe 2
expect(editor.renderedLines.find('.line:eq(10) .indent-guide').text()).toBe ' '
describe "gutter rendering", ->
beforeEach ->
editor.attachToDom(heightInLines: 5.5)

View File

@@ -1006,6 +1006,18 @@ class Editor extends View
return [] if !@firstRenderedScreenRow? and !@lastRenderedScreenRow?
intactRanges = [{start: @firstRenderedScreenRow, end: @lastRenderedScreenRow, domStart: 0}]
if @showIndentGuide
trailingEmptyLineChanges = []
for change in @pendingChanges
continue unless change.bufferDelta?
start = change.end + change.bufferDelta + 1
continue unless @lineForBufferRow(start) is ''
end = start
end++ while @lineForBufferRow(end + 1) is ''
trailingEmptyLineChanges.push({start, end, screenDelta: 0})
@pendingChanges.push(trailingEmptyLineChanges...)
for change in @pendingChanges
newIntactRanges = []
for range in intactRanges