Rename pre/postRange to old/newRange

This commit is contained in:
Nathan Sobo
2012-02-07 10:31:06 -07:00
parent 945ba38cca
commit 022bdfaeb0
6 changed files with 43 additions and 43 deletions

View File

@@ -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")

View File

@@ -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)

View File

@@ -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)

View File

@@ -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