11{Range } = require ' atom'
22AllWhitespace = / ^ \s $ /
33WholeWordRegex = / \S + /
4+ {mergeRanges } = require ' ./utils'
45
56class TextObject
67 constructor : (@editor , @state ) ->
@@ -12,14 +13,15 @@ class TextObject
1213
1314class SelectInsideWord extends TextObject
1415 select : ->
15- @editor .selectWordsContainingCursors ()
16+ for selection in @editor .getSelections ()
17+ selection .expandOverWord ()
1618 [true ]
1719
1820class SelectInsideWholeWord extends TextObject
1921 select : ->
2022 for selection in @editor .getSelections ()
2123 range = selection .cursor .getCurrentWordBufferRange ({wordRegex : WholeWordRegex})
22- selection .setBufferRange (range)
24+ selection .setBufferRange (mergeRanges ( selection . getBufferRange (), range) )
2325 true
2426
2527# SelectInsideQuotes and the next class defined (SelectInsideBrackets) are
@@ -86,7 +88,7 @@ class SelectInsideQuotes extends TextObject
8688 ++ start .column # skip the opening quote
8789 end = @ findClosingQuote (start)
8890 if end?
89- selection .setBufferRange ([start, end])
91+ selection .setBufferRange (mergeRanges ( selection . getBufferRange (), [start, end]) )
9092 not selection .isEmpty ()
9193
9294# SelectInsideBrackets and the previous class defined (SelectInsideQuotes) are
@@ -136,13 +138,13 @@ class SelectInsideBrackets extends TextObject
136138 ++ start .column # skip the opening quote
137139 end = @ findClosingBracket (start)
138140 if end?
139- selection .setBufferRange ([start, end])
141+ selection .setBufferRange (mergeRanges ( selection . getBufferRange (), [start, end]) )
140142 not selection .isEmpty ()
141143
142144class SelectAWord extends TextObject
143145 select : ->
144146 for selection in @editor .getSelections ()
145- selection .selectWord ()
147+ selection .expandOverWord ()
146148 loop
147149 endPoint = selection .getBufferRange ().end
148150 char = @editor .getTextInRange (Range .fromPointWithDelta (endPoint, 0 , 1 ))
@@ -154,7 +156,7 @@ class SelectAWholeWord extends TextObject
154156 select : ->
155157 for selection in @editor .getSelections ()
156158 range = selection .cursor .getCurrentWordBufferRange ({wordRegex : WholeWordRegex})
157- selection .setBufferRange (range)
159+ selection .setBufferRange (mergeRanges ( selection . getBufferRange (), range) )
158160 loop
159161 endPoint = selection .getBufferRange ().end
160162 char = @editor .getTextInRange (Range .fromPointWithDelta (endPoint, 0 , 1 ))
@@ -186,17 +188,19 @@ class Paragraph extends TextObject
186188
187189class SelectInsideParagraph extends Paragraph
188190 selectParagraph : (selection ) ->
189- startPoint = selection .getBufferRange ().start
190- range = @ paragraphDelimitedRange (startPoint)
191- selection .setBufferRange (range)
191+ oldRange = selection .getBufferRange ()
192+ startPoint = selection .cursor .getBufferPosition ()
193+ newRange = @ paragraphDelimitedRange (startPoint)
194+ selection .setBufferRange (mergeRanges (oldRange, newRange))
192195 true
193196
194197class SelectAParagraph extends Paragraph
195198 selectParagraph : (selection ) ->
196- startPoint = selection .getBufferRange ().start
197- range = @ paragraphDelimitedRange (startPoint)
198- nextRange = @ paragraphDelimitedRange (range .end )
199- selection .setBufferRange ([range .start , nextRange .end ])
199+ oldRange = selection .getBufferRange ()
200+ startPoint = selection .cursor .getBufferPosition ()
201+ newRange = @ paragraphDelimitedRange (startPoint)
202+ nextRange = @ paragraphDelimitedRange (newRange .end )
203+ selection .setBufferRange (mergeRanges (oldRange, [newRange .start , nextRange .end ]))
200204 true
201205
202206module .exports = {TextObject, SelectInsideWord, SelectInsideWholeWord, SelectInsideQuotes,
0 commit comments