       outSelLeft.leftPos = selection.leftPos
       outSelLeft.rightPos = inSel.leftPos
       outSelLeft.bind selection.left, inSel.left
+
+      # Remove empty selections
+      [outSelRight, inSel, outSelLeft].forEach( (sel) ->
+        if sel.isEmpty()
+          sel.unbind()
+          @rte.removeSel sel
+          )
     else
       console.log "Impossible to split, #{@} is not in #{selection}"
 

    newSel.right = @right
    newSel.rightPos = @rightPos

    newSel.bind @left, @right

    newSel

    (word1 == word2 and pos1 <= pos2) or
     ((word1.index @rte) < (word2.index @rte))

  # Returns true when the "side" side of the selection is greater than the
  # position given as parameters.
  # @param word2 [Word] a word instance
  # @param pos2 [Integer] the offset in this word
  # @param side [String] either "left" or "right"
  gt: (word2, pos2, side)->
    if not (_.isString side)
      throw new Error "Expected a string as first argument, got #{side}"
