     @cursor.selection = this
 
     @cursor.on 'change-screen-position.selection', (e) =>
-      @trigger 'change-screen-range', @getScreenRange() unless e.bufferChanged
+      @emitChangeScreenRangeEvent() unless e.bufferChanged
 
     @cursor.on 'destroy.selection', =>
       @cursor = null

    @retainSelection = false
    @view?.retainSelection = false

  modifyScreenRange: (fn) ->
    oldScreenRange = @getScreenRange()
    fn()
    if @cursor
      newScreenRange = @getScreenRange()
      @trigger 'change-screen-range', newScreenRange unless oldScreenRange.isEqual(newScreenRange)

  placeAnchor: ->
    @anchor = @editSession.addAnchor(strong: true)
    @anchor.setScreenPosition(@cursor.getScreenPosition())
    @anchor.on 'change-screen-position.selection', => @trigger 'change-screen-range'

  intersectsBufferRange: (bufferRange) ->
    @getBufferRange().intersectsWith(bufferRange)

      includeNewline = bufferRange.start.column == 0 or bufferRange.start.row >= fold.startRow
      bufferRange = bufferRange.union(fold.getBufferRange({ includeNewline }))

    @editSession.buffer.delete(bufferRange) unless bufferRange.isEmpty()
    @cursor?.setBufferPosition(bufferRange.start)

  deleteLine: ->
    if @isEmpty()
