mirror of
https://github.com/atom/atom.git
synced 2026-04-06 03:02:13 -04:00
Remove more logic from cursor view
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -79,6 +79,9 @@ class EditSession
|
||||
bufferRangeForBufferRow: (row) ->
|
||||
@buffer.rangeForRow(row)
|
||||
|
||||
lineForBufferRow: (row) ->
|
||||
@buffer.lineForRow(row)
|
||||
|
||||
scanInRange: (args...) ->
|
||||
@buffer.scanInRange(args...)
|
||||
|
||||
|
||||
@@ -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..]
|
||||
|
||||
Reference in New Issue
Block a user