mirror of
https://github.com/atom/atom.git
synced 2026-02-10 14:45:11 -05:00
Make Cursor and Selection create anchors via EditSession.prototype.addAnchor
This commit is contained in:
@@ -12,11 +12,12 @@ class Cursor
|
||||
wordRegex: /(\w+)|([^\w\s]+)/g
|
||||
|
||||
constructor: ({@editSession, screenPosition, bufferPosition}) ->
|
||||
@anchor = new Anchor(@editSession)
|
||||
@anchor = @editSession.addAnchor()
|
||||
@setScreenPosition(screenPosition) if screenPosition
|
||||
@setBufferPosition(bufferPosition) if bufferPosition
|
||||
|
||||
destroy: ->
|
||||
@editSession.removeAnchor(@anchor)
|
||||
@editSession.removeCursor(this)
|
||||
@trigger 'destroy'
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
Point = require 'point'
|
||||
Buffer = require 'buffer'
|
||||
Anchor = require 'anchor'
|
||||
DisplayBuffer = require 'display-buffer'
|
||||
Cursor = require 'cursor'
|
||||
Selection = require 'selection'
|
||||
@@ -20,6 +21,7 @@ class EditSession
|
||||
scrollTop: 0
|
||||
scrollLeft: 0
|
||||
displayBuffer: null
|
||||
anchors: null
|
||||
cursors: null
|
||||
selections: null
|
||||
autoIndent: true
|
||||
@@ -31,6 +33,7 @@ class EditSession
|
||||
@softTabs ?= true
|
||||
@displayBuffer = new DisplayBuffer(@buffer, { @tabText })
|
||||
@tokenizedBuffer = @displayBuffer.tokenizedBuffer
|
||||
@anchors = []
|
||||
@cursors = []
|
||||
@selections = []
|
||||
@addCursorAtScreenPosition([0, 0])
|
||||
@@ -227,6 +230,14 @@ class EditSession
|
||||
fn(selection) for selection in selections
|
||||
@buffer.endUndoBatch(@getSelectedBufferRanges())
|
||||
|
||||
addAnchor: ->
|
||||
anchor = new Anchor(this)
|
||||
@anchors.push(anchor)
|
||||
anchor
|
||||
|
||||
removeAnchor: (anchor) ->
|
||||
_.remove(@anchors, anchor)
|
||||
|
||||
getCursors: -> new Array(@cursors...)
|
||||
|
||||
getCursor: (index=0) ->
|
||||
|
||||
@@ -68,7 +68,9 @@ class Selection
|
||||
@editSession.buffer.getTextInRange(@getBufferRange())
|
||||
|
||||
clear: ->
|
||||
@modifyScreenRange => @anchor = null
|
||||
@modifyScreenRange =>
|
||||
@editSession.removeAnchor(@anchor)
|
||||
@anchor = null
|
||||
|
||||
selectWord: ->
|
||||
@setBufferRange(@cursor.getCurrentWordBufferRange())
|
||||
@@ -229,7 +231,7 @@ class Selection
|
||||
@trigger 'change-screen-range', newScreenRange unless oldScreenRange.isEqual(newScreenRange)
|
||||
|
||||
placeAnchor: ->
|
||||
@anchor = new Anchor(@editSession)
|
||||
@anchor = @editSession.addAnchor()
|
||||
@anchor.setScreenPosition(@cursor.getScreenPosition())
|
||||
|
||||
intersectsBufferRange: (bufferRange) ->
|
||||
|
||||
Reference in New Issue
Block a user