diff --git a/src/TabComplete.js b/src/TabComplete.js
index c82d8e4644204545b36a4d4ac019f66c21bc047e..0cf6e1948ac18c230b08bb5c9fbf3598846e0169 100644
--- a/src/TabComplete.js
+++ b/src/TabComplete.js
@@ -84,9 +84,38 @@ class TabComplete {
     }
 
     startTabCompleting(passive) {
+        this.originalText = this.textArea.value; // cache starting text
+
+        // grab the partial word from the text which we'll be tab-completing
+        var res = MATCH_REGEX.exec(this.originalText);
+        if (!res) {
+            this.matchedList = [];
+            return;
+        }
+        // ES6 destructuring; ignore first element (the complete match)
+        var [ , boundaryGroup, partialGroup] = res;
+
+        if (partialGroup.length === 0 && passive) {
+            return;
+        }
+
+        this.isFirstWord = partialGroup.length === this.originalText.length;
+
         this.completing = true;
         this.currentIndex = 0;
-        this._calculateCompletions(passive);
+
+        this.matchedList = [
+            new Entry(partialGroup) // first entry is always the original partial
+        ];
+
+        // find matching entries in the set of entries given to us
+        this.list.forEach((entry) => {
+            if (entry.text.toLowerCase().indexOf(partialGroup.toLowerCase()) === 0) {
+                this.matchedList.push(entry);
+            }
+        });
+
+        // console.log("calculated completions => %s", JSON.stringify(this.matchedList));
     }
 
     /**
@@ -270,38 +299,6 @@ class TabComplete {
         });
     }
 
-    _calculateCompletions(passive) {
-        this.originalText = this.textArea.value; // cache starting text
-
-        // grab the partial word from the text which we'll be tab-completing
-        var res = MATCH_REGEX.exec(this.originalText);
-        if (!res) {
-            this.matchedList = [];
-            return;
-        }
-        // ES6 destructuring; ignore first element (the complete match)
-        var [ , boundaryGroup, partialGroup] = res;
-        this.isFirstWord = partialGroup.length === this.originalText.length;
-
-        if (partialGroup.length === 0 && passive) {
-            this.stopTabCompleting();
-            return;
-        }
-
-        this.matchedList = [
-            new Entry(partialGroup) // first entry is always the original partial
-        ];
-
-        // find matching entries in the set of entries given to us
-        this.list.forEach((entry) => {
-            if (entry.text.toLowerCase().indexOf(partialGroup.toLowerCase()) === 0) {
-                this.matchedList.push(entry);
-            }
-        });
-
-        // console.log("_calculateCompletions => %s", JSON.stringify(this.matchedList));
-    }
-
     _notifyStateChange() {
         if (this.opts.onStateChange) {
             this.opts.onStateChange(this.completing);