         expect(editor.getSelectedBufferRanges()).toEqual [[[1, 2], [1, 5]]]
 
     describe "when a word is selected", ->
-      it "selects the next occurrence of the selected word skipping any non-word matches", ->
-        editor.setText """
-          for
-          information
-          format
-          another for
-          fork
-          a 3rd for is here
-        """
-
-        editor.setSelectedBufferRange([[0, 0], [0, 3]])
-
-        atom.commands.dispatch editorElement, 'find-and-replace:select-next'
-        expect(editor.getSelectedBufferRanges()).toEqual [
-          [[0, 0], [0, 3]]
-          [[3, 8], [3, 11]]
-        ]
-
-        atom.commands.dispatch editorElement, 'find-and-replace:select-next'
-        expect(editor.getSelectedBufferRanges()).toEqual [
-          [[0, 0], [0, 3]]
-          [[3, 8], [3, 11]]
-          [[5, 6], [5, 9]]
-        ]
-
-        atom.commands.dispatch editorElement, 'find-and-replace:select-next'
-        expect(editor.getSelectedBufferRanges()).toEqual [
-          [[0, 0], [0, 3]]
-          [[3, 8], [3, 11]]
-          [[5, 6], [5, 9]]
-        ]
-
-        editor.setText "Testing reallyTesting"
-        editor.setCursorBufferPosition([0, 0])
-
-        atom.commands.dispatch editorElement, 'find-and-replace:select-next'
-        expect(editor.getSelectedBufferRanges()).toEqual [
-          [[0, 0], [0, 7]]
-        ]
-
-        atom.commands.dispatch editorElement, 'find-and-replace:select-next'
-        expect(editor.getSelectedBufferRanges()).toEqual [
-          [[0, 0], [0, 7]]
-        ]
+      describe "when findOptions.wholeWord is false", ->
+        beforeEach ->
+          findOptions.set(wholeWord: false)
+
+        it "selects the next occurrence of the selected word skipping any non-word matches", ->
+          editor.setText """
+            for
+            information
+            format
+            another for
+            fork
+            a 3rd for is here
+          """
+
+          editor.setSelectedBufferRange([[0, 0], [0, 3]])
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[0, 0], [0, 3]]
+            [[1, 2], [1, 5]]
+          ]
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[0, 0], [0, 3]]
+            [[1, 2], [1, 5]]
+            [[2, 0], [2, 3]]
+          ]
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[0, 0], [0, 3]]
+            [[1, 2], [1, 5]]
+            [[2, 0], [2, 3]]
+            [[3, 8], [3, 11]]
+          ]
+
+          editor.setText "Testing reallyTesting"
+          editor.setCursorBufferPosition([0, 0])
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[0, 0], [0, 7]]
+          ]
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[0, 0], [0, 7]]
+            [[0, 14], [0, 21]]
+          ]
+
+      describe "when findOptions.wholeWord is true", ->
+        beforeEach ->
+          findOptions.set(wholeWord: true)
+
+        it "selects the next occurrence of the selected word skipping any non-word matches", ->
+          editor.setText """
+            for
+            information
+            format
+            another for
+            fork
+            a 3rd for is here
+          """
+
+          editor.setSelectedBufferRange([[0, 0], [0, 3]])
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[0, 0], [0, 3]]
+            [[3, 8], [3, 11]]
+          ]
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[0, 0], [0, 3]]
+            [[3, 8], [3, 11]]
+            [[5, 6], [5, 9]]
+          ]
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[0, 0], [0, 3]]
+            [[3, 8], [3, 11]]
+            [[5, 6], [5, 9]]
+          ]
+
+          editor.setText "Testing reallyTesting"
+          editor.setCursorBufferPosition([0, 0])
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[0, 0], [0, 7]]
+          ]
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[0, 0], [0, 7]]
+          ]
 
     describe "when part of a word is selected", ->
-      it "selects the next occurrence of the selected text", ->
-        editor.setText """
-          for
-          information
-          format
-          another for
-          fork
-          a 3rd for is here
-        """
-
-        editor.setSelectedBufferRange([[1, 2], [1, 5]])
-
-        atom.commands.dispatch editorElement, 'find-and-replace:select-next'
-        expect(editor.getSelectedBufferRanges()).toEqual [
-          [[1, 2], [1, 5]]
-          [[2, 0], [2, 3]]
-        ]
-
-        atom.commands.dispatch editorElement, 'find-and-replace:select-next'
-        expect(editor.getSelectedBufferRanges()).toEqual [
-          [[1, 2], [1, 5]]
-          [[2, 0], [2, 3]]
-          [[3, 8], [3, 11]]
-        ]
-
-        atom.commands.dispatch editorElement, 'find-and-replace:select-next'
-        expect(editor.getSelectedBufferRanges()).toEqual [
-          [[1, 2], [1, 5]]
-          [[2, 0], [2, 3]]
-          [[3, 8], [3, 11]]
-          [[4, 0], [4, 3]]
-        ]
-
-        atom.commands.dispatch editorElement, 'find-and-replace:select-next'
-        expect(editor.getSelectedBufferRanges()).toEqual [
-          [[1, 2], [1, 5]]
-          [[2, 0], [2, 3]]
-          [[3, 8], [3, 11]]
-          [[4, 0], [4, 3]]
-          [[5, 6], [5, 9]]
-        ]
-
-        atom.commands.dispatch editorElement, 'find-and-replace:select-next'
-        expect(editor.getSelectedBufferRanges()).toEqual [
-          [[1, 2], [1, 5]]
-          [[2, 0], [2, 3]]
-          [[3, 8], [3, 11]]
-          [[4, 0], [4, 3]]
-          [[5, 6], [5, 9]]
-          [[0, 0], [0, 3]]
-        ]
+      describe "when findOptions.wholeWord is false", ->
+        beforeEach ->
+          findOptions.set(wholeWord: false)
+
+        it "selects the next occurrence of the selected text", ->
+          editor.setText """
+            for
+            information
+            format
+            another for
+            fork
+            a 3rd for is here
+          """
+
+          editor.setSelectedBufferRange([[1, 2], [1, 5]])
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[1, 2], [1, 5]]
+            [[2, 0], [2, 3]]
+          ]
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[1, 2], [1, 5]]
+            [[2, 0], [2, 3]]
+            [[3, 8], [3, 11]]
+          ]
+
+      describe "when findOptions.wholeWord is true", ->
+        beforeEach ->
+          findOptions.set(wholeWord: true)
+
+        it "selects the next occurrence of the selected text", ->
+          editor.setText """
+            for
+            information
+            format
+            another for
+            fork
+            a 3rd for is here
+          """
+
+          editor.setSelectedBufferRange([[1, 2], [1, 5]])
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[1, 2], [1, 5]]
+            [[2, 0], [2, 3]]
+          ]
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[1, 2], [1, 5]]
+            [[2, 0], [2, 3]]
+            [[3, 8], [3, 11]]
+          ]
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[1, 2], [1, 5]]
+            [[2, 0], [2, 3]]
+            [[3, 8], [3, 11]]
+            [[4, 0], [4, 3]]
+          ]
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[1, 2], [1, 5]]
+            [[2, 0], [2, 3]]
+            [[3, 8], [3, 11]]
+            [[4, 0], [4, 3]]
+            [[5, 6], [5, 9]]
+          ]
+
+          atom.commands.dispatch editorElement, 'find-and-replace:select-next'
+          expect(editor.getSelectedBufferRanges()).toEqual [
+            [[1, 2], [1, 5]]
+            [[2, 0], [2, 3]]
+            [[3, 8], [3, 11]]
+            [[4, 0], [4, 3]]
+            [[5, 6], [5, 9]]
+            [[0, 0], [0, 3]]
+          ]
 
     describe "when a non-word is selected", ->
       it "selects the next occurrence of the selected text", ->

        ]

    describe "when starting at the bottom word", ->
      it "unselects words in order", ->
        editor.setText """
          for

        ]

    describe "when three words are selected", ->
      beforeEach ->
        findOptions.set(wholeWord: true)

      it "unselects words in order", ->

        editor.setText """
          for
          information
