Remove more logic from cursor view

This commit is contained in:
Nathan Sobo
2012-06-07 16:58:45 -06:00
parent f406786a3a
commit 608c4f48bf
5 changed files with 36 additions and 50 deletions

View File

@@ -34,11 +34,3 @@ describe "Cursor", ->
advanceClock(100)
expect(cursor).toHaveClass 'idle'
describe ".isOnEOL()", ->
it "only returns true when cursor is on the end of a line", ->
cursor.setScreenPosition([1,29])
expect(cursor.isOnEOL()).toBeFalsy()
cursor.setScreenPosition([1,30])
expect(cursor.isOnEOL()).toBeTruthy()

View File

@@ -14,7 +14,6 @@ class CursorView extends View
hidden: false
initialize: (@cursor, @editor) ->
@anchor = new Anchor(@editor, cursor.getScreenPosition())
@selection = @editor.compositeSelection.addSelectionForCursor(this)
@cursor.on 'change-screen-position', (position, options) =>
@@ -37,42 +36,6 @@ class CursorView extends View
@cursor.off()
super
getBufferPosition: ->
@cursor.getBufferPosition()
setBufferPosition: (bufferPosition, options={}) ->
@cursor.setBufferPosition(bufferPosition, options)
getScreenPosition: ->
@cursor.getScreenPosition()
setScreenPosition: (position, options={}) ->
if options.fromModel
@anchor.setScreenPosition(position, options)
@refreshScreenPosition()
@clearSelection() unless options.bufferChange
else
@cursor.setScreenPosition(position, options)
removeIdleClassTemporarily: ->
@removeClass 'idle'
window.clearTimeout(@idleTimeout) if @idleTimeout
@idleTimeout = window.setTimeout (=> @addClass 'idle'), 200
resetCursorAnimation: ->
window.clearTimeout(@idleTimeout) if @idleTimeout
@removeClass 'idle'
_.defer => @addClass 'idle'
clearSelection: ->
@selection.clearSelection() unless @selection.retainSelection
getCurrentBufferLine: ->
@editor.lineForBufferRow(@getBufferPosition().row)
isOnEOL: ->
@getScreenPosition().column == @getCurrentBufferLine().length
updateAppearance: ->
screenPosition = @getScreenPosition()
pixelPosition = @editor.pixelPositionForScreenPosition(screenPosition)
@@ -89,3 +52,28 @@ class CursorView extends View
@hidden = false
@selection.updateAppearance()
getBufferPosition: ->
@cursor.getBufferPosition()
setBufferPosition: (bufferPosition, options={}) ->
@cursor.setBufferPosition(bufferPosition, options)
getScreenPosition: ->
@cursor.getScreenPosition()
setScreenPosition: (position, options={}) ->
@cursor.setScreenPosition(position, options)
removeIdleClassTemporarily: ->
@removeClass 'idle'
window.clearTimeout(@idleTimeout) if @idleTimeout
@idleTimeout = window.setTimeout (=> @addClass 'idle'), 200
resetCursorAnimation: ->
window.clearTimeout(@idleTimeout) if @idleTimeout
@removeClass 'idle'
_.defer => @addClass 'idle'
clearSelection: ->
@selection.clearSelection() unless @selection.retainSelection

View File

@@ -36,9 +36,12 @@ class Cursor
getBufferPosition: ->
@anchor.getBufferPosition()
getBufferRow: ->
getCurrentBufferRow: ->
@getBufferPosition().row
getCurrentBufferLine: ->
@editSession.lineForBufferRow(@getCurrentBufferRow())
refreshScreenPosition: ->
@anchor.refreshScreenPosition()
@trigger 'change-screen-position', @getScreenPosition(), bufferChange: false
@@ -75,7 +78,7 @@ class Cursor
@setBufferPosition(@editSession.getEofBufferPosition())
moveToBeginningOfLine: ->
@setBufferPosition([@getBufferRow(), 0])
@setBufferPosition([@getCurrentBufferRow(), 0])
moveToFirstCharacterOfLine: ->
position = @getBufferPosition()
@@ -88,7 +91,7 @@ class Cursor
@setBufferPosition(newPosition)
moveToEndOfLine: ->
@setBufferPosition([@getBufferRow(), Infinity], clip: true)
@setBufferPosition([@getCurrentBufferRow(), Infinity], clip: true)
moveToBeginningOfWord: ->
@setBufferPosition(@getBeginningOfCurrentWordBufferPosition())
@@ -141,6 +144,6 @@ class Cursor
new Range(@getBeginningOfCurrentWordBufferPosition(allowPrevious: false), @getEndOfCurrentWordBufferPosition(allowNext: false))
getCurrentLineBufferRange: ->
@editSession.bufferRangeForBufferRow(@getBufferRow())
@editSession.bufferRangeForBufferRow(@getCurrentBufferRow())
_.extend Cursor.prototype, EventEmitter

View File

@@ -79,6 +79,9 @@ class EditSession
bufferRangeForBufferRow: (row) ->
@buffer.rangeForRow(row)
lineForBufferRow: (row) ->
@buffer.lineForRow(row)
scanInRange: (args...) ->
@buffer.scanInRange(args...)

View File

@@ -135,7 +135,7 @@ class Selection extends View
mode = @editor.getCurrentMode()
row = @cursor.getScreenPosition().row
state = @editor.stateForScreenRow(row)
lineBeforeCursor = @cursor.getCurrentBufferLine()[0...@cursor.getBufferPosition().column]
lineBeforeCursor = @cursor.cursor.getCurrentBufferLine()[0...@cursor.getBufferPosition().column]
if text[0] == "\n"
indent = mode.getNextLineIndent(state, lineBeforeCursor, @editor.tabText)
text = text[0] + indent + text[1..]