mirror of
https://github.com/atom/atom.git
synced 2026-01-24 22:38:20 -05:00
Rename pre/postRange to old/newRange
This commit is contained in:
@@ -117,8 +117,8 @@ describe 'Buffer', ->
|
||||
|
||||
[event] = changeHandler.argsForCall[0]
|
||||
expect(event.string).toBe newText
|
||||
expect(event.preRange).toEqual expectedPreRange
|
||||
expect(event.postRange).toEqual(new Range([0, 0], [1, 14]))
|
||||
expect(event.oldRange).toEqual expectedPreRange
|
||||
expect(event.newRange).toEqual(new Range([0, 0], [1, 14]))
|
||||
|
||||
describe ".save()", ->
|
||||
describe "when the buffer has a path", ->
|
||||
|
||||
@@ -35,8 +35,8 @@ describe "Highlighter", ->
|
||||
expect(changeHandler).toHaveBeenCalled()
|
||||
[event] = changeHandler.argsForCall[0]
|
||||
|
||||
expect(event.preRange).toEqual range
|
||||
expect(event.postRange).toEqual new Range([0, 0], [2,0])
|
||||
expect(event.oldRange).toEqual range
|
||||
expect(event.newRange).toEqual new Range([0, 0], [2,0])
|
||||
|
||||
it "updates tokens for lines beyond the changed lines if needed", ->
|
||||
buffer.insert([5, 30], '/* */')
|
||||
@@ -49,8 +49,8 @@ describe "Highlighter", ->
|
||||
|
||||
expect(changeHandler).toHaveBeenCalled()
|
||||
[event] = changeHandler.argsForCall[0]
|
||||
expect(event.preRange).toEqual new Range([2, 0], [5, buffer.getLine(5).length])
|
||||
expect(event.postRange).toEqual new Range([2, 0], [5, buffer.getLine(5).length])
|
||||
expect(event.oldRange).toEqual new Range([2, 0], [5, buffer.getLine(5).length])
|
||||
expect(event.newRange).toEqual new Range([2, 0], [5, buffer.getLine(5).length])
|
||||
|
||||
it "resumes highlighting with the state of the previous line", ->
|
||||
buffer.insert([0, 0], '/*')
|
||||
@@ -78,8 +78,8 @@ describe "Highlighter", ->
|
||||
|
||||
expect(changeHandler).toHaveBeenCalled()
|
||||
[event] = changeHandler.argsForCall[0]
|
||||
expect(event.preRange).toEqual range
|
||||
expect(event.postRange).toEqual new Range([1, 0], [1, 5])
|
||||
expect(event.oldRange).toEqual range
|
||||
expect(event.newRange).toEqual new Range([1, 0], [1, 5])
|
||||
|
||||
it "updates tokens for lines beyond the changed lines if needed", ->
|
||||
buffer.insert([5, 30], '/* */')
|
||||
@@ -92,8 +92,8 @@ describe "Highlighter", ->
|
||||
|
||||
expect(changeHandler).toHaveBeenCalled()
|
||||
[event] = changeHandler.argsForCall[0]
|
||||
expect(event.preRange).toEqual new Range([2, 0], [5, buffer.getLine(4).length])
|
||||
expect(event.postRange).toEqual new Range([2, 0], [4, buffer.getLine(4).length])
|
||||
expect(event.oldRange).toEqual new Range([2, 0], [5, buffer.getLine(4).length])
|
||||
expect(event.newRange).toEqual new Range([2, 0], [4, buffer.getLine(4).length])
|
||||
|
||||
describe "when lines are both updated and inserted", ->
|
||||
it "updates tokens to reflect the inserted lines", ->
|
||||
@@ -117,8 +117,8 @@ describe "Highlighter", ->
|
||||
|
||||
expect(changeHandler).toHaveBeenCalled()
|
||||
[event] = changeHandler.argsForCall[0]
|
||||
expect(event.preRange).toEqual range
|
||||
expect(event.postRange).toEqual new Range([1, 0], [4, 6])
|
||||
expect(event.oldRange).toEqual range
|
||||
expect(event.newRange).toEqual new Range([1, 0], [4, 6])
|
||||
|
||||
it "updates tokens for lines beyond the changed lines if needed", ->
|
||||
buffer.insert([5, 30], '/* */')
|
||||
@@ -135,5 +135,5 @@ describe "Highlighter", ->
|
||||
|
||||
expect(changeHandler).toHaveBeenCalled()
|
||||
[event] = changeHandler.argsForCall[0]
|
||||
expect(event.preRange).toEqual new Range([2, 0], [5, buffer.getLine(7).length])
|
||||
expect(event.postRange).toEqual new Range([2, 0], [7, buffer.getLine(7).length])
|
||||
expect(event.oldRange).toEqual new Range([2, 0], [5, buffer.getLine(7).length])
|
||||
expect(event.newRange).toEqual new Range([2, 0], [7, buffer.getLine(7).length])
|
||||
|
||||
@@ -65,25 +65,25 @@ class Buffer
|
||||
insert: (point, text) ->
|
||||
@change(new Range(point, point), text)
|
||||
|
||||
change: (preRange, newText) ->
|
||||
postRange = new Range(_.clone(preRange.start), _.clone(preRange.start))
|
||||
prefix = @lines[preRange.start.row][0...preRange.start.column]
|
||||
suffix = @lines[preRange.end.row][preRange.end.column..]
|
||||
change: (oldRange, newText) ->
|
||||
newRange = new Range(_.clone(oldRange.start), _.clone(oldRange.start))
|
||||
prefix = @lines[oldRange.start.row][0...oldRange.start.column]
|
||||
suffix = @lines[oldRange.end.row][oldRange.end.column..]
|
||||
|
||||
newTextLines = newText.split('\n')
|
||||
|
||||
if newTextLines.length == 1
|
||||
postRange.end.column += newText.length
|
||||
newRange.end.column += newText.length
|
||||
newTextLines = [prefix + newText + suffix]
|
||||
else
|
||||
lastLineIndex = newTextLines.length - 1
|
||||
newTextLines[0] = prefix + newTextLines[0]
|
||||
postRange.end.row += lastLineIndex
|
||||
postRange.end.column = newTextLines[lastLineIndex].length
|
||||
newRange.end.row += lastLineIndex
|
||||
newRange.end.column = newTextLines[lastLineIndex].length
|
||||
newTextLines[lastLineIndex] += suffix
|
||||
|
||||
@lines[preRange.start.row..preRange.end.row] = newTextLines
|
||||
@trigger 'change', { preRange, postRange, string: newText }
|
||||
@lines[oldRange.start.row..oldRange.end.row] = newTextLines
|
||||
@trigger 'change', { oldRange, newRange, string: newText }
|
||||
|
||||
save: ->
|
||||
if not @path then throw new Error("Tried to save buffer with no url")
|
||||
|
||||
@@ -13,7 +13,7 @@ class Cursor extends View
|
||||
@one 'attach', => @updateAppearance()
|
||||
|
||||
bufferChanged: (e) ->
|
||||
@setPosition(e.postRange.end)
|
||||
@setPosition(e.newRange.end)
|
||||
|
||||
setPosition: (point) ->
|
||||
point = Point.fromObject(point)
|
||||
|
||||
@@ -129,19 +129,19 @@ class Editor extends View
|
||||
@cursor.bufferChanged(e)
|
||||
|
||||
@highlighter.on 'change', (e) =>
|
||||
{ preRange, postRange } = e
|
||||
{ oldRange, newRange } = e
|
||||
|
||||
if postRange.end.row > preRange.end.row
|
||||
if newRange.end.row > oldRange.end.row
|
||||
# update, then insert elements
|
||||
for row in [preRange.start.row..postRange.end.row]
|
||||
if row <= preRange.end.row
|
||||
for row in [oldRange.start.row..newRange.end.row]
|
||||
if row <= oldRange.end.row
|
||||
@updateLineElement(row)
|
||||
else
|
||||
@insertLineElement(row)
|
||||
else
|
||||
# traverse in reverse... remove, then update elements
|
||||
for row in [preRange.end.row..preRange.start.row]
|
||||
if row > postRange.end.row
|
||||
for row in [oldRange.end.row..oldRange.start.row]
|
||||
if row > newRange.end.row
|
||||
@removeLineElement(row)
|
||||
else
|
||||
@updateLineElement(row)
|
||||
|
||||
@@ -16,20 +16,20 @@ class Highlighter
|
||||
@tokenizer = (new Mode).getTokenizer()
|
||||
|
||||
handleBufferChange: (e) ->
|
||||
preRange = e.preRange.copy()
|
||||
postRange = e.postRange.copy()
|
||||
previousState = @lines[preRange.end.row].state # used in spill detection below
|
||||
oldRange = e.oldRange.copy()
|
||||
newRange = e.newRange.copy()
|
||||
previousState = @lines[oldRange.end.row].state # used in spill detection below
|
||||
|
||||
startState = @lines[postRange.start.row - 1]?.state or 'start'
|
||||
@lines[preRange.start.row..preRange.end.row] =
|
||||
@tokenizeRows(startState, postRange.start.row, postRange.end.row)
|
||||
startState = @lines[newRange.start.row - 1]?.state or 'start'
|
||||
@lines[oldRange.start.row..oldRange.end.row] =
|
||||
@tokenizeRows(startState, newRange.start.row, newRange.end.row)
|
||||
|
||||
# spill detection
|
||||
# compare scanner state of last re-highlighted line with its previous state.
|
||||
# if it differs, re-tokenize the next line with the new state and repeat for
|
||||
# each line until the line's new state matches the previous state. this covers
|
||||
# cases like inserting a /* needing to comment out lines below until we see a */
|
||||
for row in [postRange.end.row...@buffer.lastRow()]
|
||||
for row in [newRange.end.row...@buffer.lastRow()]
|
||||
break if @lines[row].state == previousState
|
||||
nextRow = row + 1
|
||||
previousState = @lines[nextRow].state
|
||||
@@ -37,14 +37,14 @@ class Highlighter
|
||||
|
||||
# if highlighting spilled beyond the bounds of the textual change, update
|
||||
# the pre and post range to reflect area of highlight changes
|
||||
if nextRow > postRange.end.row
|
||||
preRange.end.row += (nextRow - postRange.end.row)
|
||||
postRange.end.row = nextRow
|
||||
if nextRow > newRange.end.row
|
||||
oldRange.end.row += (nextRow - newRange.end.row)
|
||||
newRange.end.row = nextRow
|
||||
endColumn = @buffer.getLine(nextRow).length
|
||||
postRange.end.column = endColumn
|
||||
preRange.end.column = endColumn
|
||||
newRange.end.column = endColumn
|
||||
oldRange.end.column = endColumn
|
||||
|
||||
@trigger("change", {preRange, postRange})
|
||||
@trigger("change", {oldRange, newRange})
|
||||
|
||||
tokenizeRows: (startState, startRow, endRow) ->
|
||||
state = startState
|
||||
|
||||
Reference in New Issue
Block a user