     @setBufferRange([tail, head], options)
     @setReversedState(head.isLessThan(tail))
 
+  applyColumnFromProperties: ->
+    selectionProperties = @getProperties()
+    return unless selectionProperties?
+    {head, tail} = selectionProperties
+
+    if @selection.isReversed()
+      [start, end] = [head, tail]
+    else
+      [start, end] = [tail, head]
+    [start.row, end.row] = @selection.getBufferRowRange()
+    @setBufferRange([start, end])
+    @translateSelectionEndAndClip('backward', translate: false)
+
   # set selections bufferRange with default option {autoscroll: false, preserveFolds: true}
   setBufferRange: (range, options={}) ->
     if options.keepGoalColumn ? true

  normalize: ->
    unless @selection.isEmpty()
      if @hasProperties() and @getProperties().wise is 'linewise'
        @selectByProperties(@getProperties())
        @translateSelectionEndAndClip('backward', translate: false)
      else
        @translateSelectionEndAndClip('backward')
    @clearProperties()

{Range, Point, Disposable} = require 'atom'
{
  translatePointAndClip
  getRangeByTranslatePointAndClip
