     @enterInsertMode()
 
   # This used whenever manipulating the selection may, as a side effect, change the clipboard contents.  We
-  # always restore the original clipboard contents when we're done. Note, this may be asynchronous.  We use
-  # this approach (as opposed to the simpler, synchronous method used by Visual mode) because the user may
-  # wish to select text with the mouse (while edit mode is active) to later paste with "p" or "P".
+  # restore the original clipboard contents when we're done. Note, this may be asynchronous.  We use this
+  # approach (as opposed to the simpler, synchronous method used by Visual mode) because the user may wish to
+  # select text with the mouse (while edit mode is active), and then paste with "p" or "P".
   protectClipboard: do ->
     locked = false
 
     (func) ->
-      if locked
-        func()
+      if locked then func()
       else
         locked = true
-        @paste (text) =>
-          func()
-          @copy text
-          locked = false
+        @paste (text) => func(); @copy text; locked = false
 
   exit: (event, target) ->
     super event, target


  pasteClipboard: (direction) ->
    @paste (text) =>
      DomUtils.simulateTextEntry @element, text if text

  openLine: (direction) ->
    @runMovement direction, "lineboundary"

      else
        if args.length == 1 then args[0] else args[...2]

    # Perform the movement.
    # We use the pseudo-granularity "vimword" to implement vim's "w" movement (which is not supported
    # natively).
    if movement[1] == "vimword" and movement[0] == forward
      x = @nextCharacter()
      if /\s/.test @nextCharacter()
        @runMovements [ forward, "word" ], [ backward, "word" ]
      else
