mirror of
https://github.com/atom/atom.git
synced 2026-02-09 14:15:24 -05:00
Implement regex addresses using Buffer.traverseRegexMatchesInRange
This commit is contained in:
@@ -3,6 +3,3 @@ _ = require 'underscore'
|
||||
module.exports =
|
||||
class Command
|
||||
isAddress: -> false
|
||||
|
||||
regexForPattern: (pattern) ->
|
||||
new RegExp(pattern, 'm')
|
||||
|
||||
@@ -6,23 +6,16 @@ class RegexAddress extends Address
|
||||
regex: null
|
||||
|
||||
constructor: (pattern) ->
|
||||
@regex = @regexForPattern(pattern)
|
||||
@regex = new RegExp(pattern)
|
||||
|
||||
getRange: (editor) ->
|
||||
selectedRange = editor.getSelection().getBufferRange()
|
||||
rangeToSearch = new Range(selectedRange.end, editor.getEofPosition())
|
||||
text = editor.getTextInRange(rangeToSearch)
|
||||
|
||||
if match = text.match(@regex)
|
||||
buffer = editor.buffer
|
||||
startIndex = buffer.characterIndexForPosition(rangeToSearch.start) + match.index
|
||||
endIndex = startIndex + match[0].length
|
||||
rangeToReturn = selectedRange
|
||||
editor.buffer.traverseRegexMatchesInRange @regex, rangeToSearch, (match, range) ->
|
||||
rangeToReturn = range
|
||||
|
||||
startPosition = buffer.positionForCharacterIndex(startIndex)
|
||||
endPosition = buffer.positionForCharacterIndex(endIndex)
|
||||
|
||||
return new Range(startPosition, endPosition)
|
||||
else
|
||||
return selectedRange
|
||||
rangeToReturn
|
||||
|
||||
isRelative: -> true
|
||||
|
||||
Reference in New Issue
Block a user