SelectAllMatchesInProject Operations create buffers on demand

This commit is contained in:
probablycorey
2013-03-19 10:48:46 -07:00
parent 1f23fa8cfc
commit 35ab49eff0
2 changed files with 17 additions and 11 deletions

View File

@@ -16,7 +16,7 @@ class SelectAllMatchesInProject extends Command
promise = project.scan @regex, ({path, range}) ->
operations.push(new Operation(
project: project
buffer: project.bufferForPath(path)
path: path
bufferRange: range
))

View File

@@ -1,22 +1,28 @@
module.exports =
class Operation
constructor: ({@project, @buffer, bufferRange, @newText, @preserveSelection, @errorMessage}) ->
@buffer.retain()
@marker = @buffer.markRange(bufferRange)
constructor: ({@project, @path, @buffer, @bufferRange, @newText, @preserveSelection, @errorMessage}) ->
@buffer?.retain()
getMarker: ->
@marker ?= @getBuffer().markRange(@bufferRange)
getBuffer: ->
@buffer ?= @project.bufferForPath(@path).retain()
getPath: ->
@project.relativize(@buffer.getPath())
path = @path ? @getBuffer().getPath()
@project.relativize(path)
getBufferRange: ->
@buffer.getMarkerRange(@marker)
@getBuffer().getMarkerRange(@getMarker())
execute: (editSession) ->
@buffer.change(@getBufferRange(), @newText) if @newText
@getBuffer().change(@getBufferRange(), @newText) if @newText
@getBufferRange() unless @preserveSelection
preview: ->
range = @buffer.getMarkerRange(@marker)
line = @buffer.lineForRow(range.start.row)
range = @getBuffer().getMarkerRange(@getMarker())
line = @getBuffer().lineForRow(range.start.row)
prefix = line[0...range.start.column]
match = line[range.start.column...range.end.column]
suffix = line[range.end.column..]
@@ -24,5 +30,5 @@ class Operation
{prefix, suffix, match, range}
destroy: ->
@buffer.destroyMarker(@marker)
@buffer.release()
@buffer?.destroyMarker(@marker) if @marker?
@buffer?.release()