     selection.toggleLineComments()
     @restorePoint(selection)
 
+# Surround
 # -------------------------
 class Surround extends TransformString
   @extend()

    cursorWord = @editor.getTextInBufferRange(bufferRange)
    {pattern: ///\b#{_.escapeRegExp(cursorWord)}\b///g, bufferRange}

# -------------------------
# When text-object is invoked from normal or viusal-mode, operation would be
#  => Select operator with target=text-object
# When motion is invoked from visual-mode, operation would be
#  => Select operator with target=motion)
class Select extends Operator
  @extend(false)
  flashTarget: false
  recordable: false
  execute: ->
    @selectTarget()
    if @isWithOccurrence()
      @updateSelectionProperties()
      submode = swrap.detectVisualModeSubmode(@editor)
      @activateModeIfNecessary('visual', submode)
    else
      if @isMode('visual') and (not @target.isAllowSubmodeChange?())
        return
      else
        submode = swrap.detectVisualModeSubmode(@editor)
        @activateModeIfNecessary('visual', submode)

class SelectLatestChange extends Select
  @extend()
  @description: "Select latest yanked or changed range"
  target: 'ALatestChange'

class SelectPreviousSelection extends Operator
  @extend()
  requireTarget: false


    @activateMode('normal')

class SetCursorsToStartOfTarget extends Operator
  @extend()
  flashTarget: false
