mirror of
https://github.com/atom/atom.git
synced 2026-02-09 22:24:59 -05:00
Add single-line addresses to command interpreter
This commit is contained in:
9
src/atom/command-interpreter/address-range.coffee
Normal file
9
src/atom/command-interpreter/address-range.coffee
Normal file
@@ -0,0 +1,9 @@
|
||||
Address = require 'command-interpreter/address'
|
||||
Range = require 'range'
|
||||
|
||||
module.exports =
|
||||
class AddressRange extends Address
|
||||
constructor: (@startAddress, @endAddress) ->
|
||||
|
||||
getRange: ->
|
||||
new Range(@startAddress.getRange().start, @endAddress.getRange().end)
|
||||
@@ -1,14 +1,4 @@
|
||||
Range = require 'range'
|
||||
|
||||
module.exports =
|
||||
class Address
|
||||
startRow: null
|
||||
endRow: null
|
||||
|
||||
constructor: (start, end) ->
|
||||
@startRow = start - 1
|
||||
@endRow = end - 1
|
||||
|
||||
execute: (editor) ->
|
||||
range = new Range([@startRow, 0], [@endRow, 0])
|
||||
editor.getSelection().setBufferRange(range)
|
||||
editor.getSelection().setBufferRange(@getRange())
|
||||
|
||||
10
src/atom/command-interpreter/line-address.coffee
Normal file
10
src/atom/command-interpreter/line-address.coffee
Normal file
@@ -0,0 +1,10 @@
|
||||
Address = require 'command-interpreter/address'
|
||||
Range = require 'range'
|
||||
|
||||
module.exports =
|
||||
class LineAddress extends Address
|
||||
constructor: (lineNumber) ->
|
||||
@row = lineNumber - 1
|
||||
|
||||
getRange: ->
|
||||
new Range([@row, 0], [@row + 1, 0])
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
var Substitution = require('command-interpreter/substitution');
|
||||
var Address = require('command-interpreter/address');
|
||||
var LineAddress = require('command-interpreter/line-address');
|
||||
var AddressRange = require('command-interpreter/address-range');
|
||||
}
|
||||
|
||||
start
|
||||
@@ -11,10 +12,13 @@ start
|
||||
return operations;
|
||||
}
|
||||
|
||||
address
|
||||
= start:integer _ ',' _ end:integer {
|
||||
return new Address(start, end)
|
||||
}
|
||||
address = addressRange / primitiveAddress
|
||||
|
||||
addressRange
|
||||
= start:primitiveAddress _ ',' _ end:address { return new AddressRange(start, end) }
|
||||
|
||||
primitiveAddress
|
||||
= lineNumber:integer { return new LineAddress(lineNumber) }
|
||||
|
||||
substitution
|
||||
= "s" _ "/" find:pattern "/" replace:pattern "/" _ options:[g]* {
|
||||
|
||||
Reference in New Issue
Block a user