Regex addresses always search from the last selection in the buffer

This commit is contained in:
Nathan Sobo
2012-03-27 18:30:49 -07:00
parent 2b77452f4f
commit 8727caf97a
4 changed files with 21 additions and 4 deletions

View File

@@ -56,14 +56,24 @@ describe "CommandInterpreter", ->
expect(editor.getSelection().getBufferRange()).toEqual [[0,0], [2,2]]
describe "/regex/", ->
beforeEach ->
editor.clearSelections()
it 'selects text matching regex after current selection', ->
editor.getSelection().setBufferRange([[4,16], [4,20]])
editor.setSelectionBufferRange([[4,16], [4,20]])
interpreter.eval(editor, '/pivot/')
expect(editor.getSelections().length).toBe 1
expect(editor.getSelection().getBufferRange()).toEqual [[6,16], [6,21]]
it 'does not require the trailing slash', ->
editor.getSelection().setBufferRange([[4,16], [4,20]])
editor.setSelectionBufferRange([[4,16], [4,20]])
interpreter.eval(editor, '/pivot')
expect(editor.getSelection().getBufferRange()).toEqual [[6,16], [6,21]]
it "searches from the end of the selection furthest forward in the buffer", ->
editor.clearSelections()
editor.setSelectionBufferRange([[4,16], [4,20]])
editor.addSelectionForBufferRange([[1,16], [2,20]])
expect(editor.getSelections().length).toBe 2
interpreter.eval(editor, '/pivot')
expect(editor.getSelections().length).toBe 1
expect(editor.getSelection().getBufferRange()).toEqual [[6,16], [6,21]]

View File

@@ -9,7 +9,7 @@ class RegexAddress extends Address
@regex = new RegExp(pattern)
getRange: (editor) ->
selectedRange = editor.getSelection().getBufferRange()
selectedRange = editor.getLastSelectionInBuffer().getBufferRange()
rangeToSearch = new Range(selectedRange.end, editor.getEofPosition())
rangeToReturn = selectedRange

View File

@@ -12,6 +12,12 @@ class CompositeSeleciton
getSelections: -> new Array(@selections...)
getLastSelectionInBuffer: ->
_.last(@getSelections().sort (a, b) ->
aRange = a.getBufferRange()
bRange = b.getBufferRange()
aRange.end.compare(bRange.end))
clearSelections: ->
for selection in @getSelections()[1..]
selection.cursor.remove()

View File

@@ -357,6 +357,7 @@ class Editor extends View
getSelection: (index) -> @compositeSelection.getSelection(index)
getSelections: -> @compositeSelection.getSelections()
getLastSelectionInBuffer: -> @compositeSelection.getLastSelectionInBuffer()
getSelectedText: -> @compositeSelection.getSelection().getText()
setSelectionBufferRange: (bufferRange, options) -> @compositeSelection.setBufferRange(bufferRange, options)
addSelectionForBufferRange: (bufferRange, options) -> @compositeSelection.addSelectionForBufferRange(bufferRange, options)