]> git.donarmstrong.com Git - dactyl.git/blobdiff - common/modules/completion.jsm
Import 1.0 supporting Firefox up to 14.*
[dactyl.git] / common / modules / completion.jsm
index ff9c0917dade8a5403118350df32baa0b1485682..c44cbb30031fa4363fd29e86ff748a1be9201757 100644 (file)
@@ -410,7 +410,7 @@ var CompletionContext = Class("CompletionContext", {
             this._cache.offset = this.offset;
             this.lastActivated = this.top.runCount;
         }
-        if (!this.itemCache[this.key]) {
+        if (!this.itemCache[this.key] && !this.waitingForTab) {
             try {
                 let res = this._generate();
                 if (res != null)
@@ -657,6 +657,7 @@ var CompletionContext = Class("CompletionContext", {
                 }
                 catch (e) {
                     util.reportError(e);
+                    XML.ignoreWhitespace = XML.prettyPrinting = false;
                     cache[idx] = util.xmlToDom(
                         <div highlight="CompItem" style="white-space: nowrap">
                             <li highlight="CompResult">{this.text}&#xa0;</li>
@@ -1014,7 +1015,6 @@ var Completion = Module("completion", {
         context.hasItems = true;
         context.completions = context.completions.filter(function ({ url, title })
             words.every(function (w) (url + " " + title).toLowerCase().indexOf(w) >= 0))
-        context.incomplete = true;
 
         context.format = this.modules.bookmarks.format;
         context.keys.extra = function (item) {
@@ -1033,20 +1033,24 @@ var Completion = Module("completion", {
             running[provider] = false;
         };
 
-        service.startSearch(context.filter, "", context.result, {
-            onSearchResult: util.wrapCallback(function onSearchResult(search, result) {
-                if (result.searchResult <= result.RESULT_SUCCESS)
-                    running[provider] = null;
-
-                context.incomplete = result.searchResult >= result.RESULT_NOMATCH_ONGOING;
-                context.completions = [
-                    { url: result.getValueAt(i), title: result.getCommentAt(i), icon: result.getImageAt(i) }
-                    for (i in util.range(0, result.matchCount))
-                ];
-            }),
-            get onUpdateSearchResult() this.onSearchResult
-        });
-        running[provider] = true;
+        if (!context.waitingForTab) {
+            context.incomplete = true;
+
+            service.startSearch(context.filter, "", context.result, {
+                onSearchResult: util.wrapCallback(function onSearchResult(search, result) {
+                    if (result.searchResult <= result.RESULT_SUCCESS)
+                        running[provider] = null;
+
+                    context.incomplete = result.searchResult >= result.RESULT_NOMATCH_ONGOING;
+                    context.completions = [
+                        { url: result.getValueAt(i), title: result.getCommentAt(i), icon: result.getImageAt(i) }
+                        for (i in util.range(0, result.matchCount))
+                    ];
+                }),
+                get onUpdateSearchResult() this.onSearchResult
+            });
+            running[provider] = true;
+        }
     }),
 
     urls: function (context, tags) {