aboutsummaryrefslogtreecommitdiffstats
path: root/lib/completion.js
diff options
context:
space:
mode:
authorNiklas Baumstark2012-01-25 17:53:48 +0100
committerNiklas Baumstark2012-04-10 23:58:07 +0200
commit76b981c5a3195eac12054afe2534645cd7610d30 (patch)
tree153c921ea9e8dabbb674d3c88962c7f18a58e5d8 /lib/completion.js
parentb23ec4bafe188dc584ebd2b674566d429198ae09 (diff)
downloadvimium-76b981c5a3195eac12054afe2534645cd7610d30.tar.bz2
fix a bug in the filtering algo that causes caching not to happen
Diffstat (limited to 'lib/completion.js')
-rw-r--r--lib/completion.js12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/completion.js b/lib/completion.js
index 6f5b0f96..68f8d4bf 100644
--- a/lib/completion.js
+++ b/lib/completion.js
@@ -117,8 +117,8 @@ var completion = (function() {
if (!(id in self.filterCache))
self.filterCache[id] = {};
- // find the most specific list of results in the cache
- var maxSpecificity = 0;
+ // find the most narrow list of results in the cache
+ var optSpecificity = source.length;
var specificity;
for (key in self.filterCache[id]) {
if (!self.filterCache[id].hasOwnProperty(key))
@@ -130,11 +130,15 @@ var completion = (function() {
continue;
}
+ // is this a plausible result set to use as a source?
+ if (query.indexOf(key) < 0)
+ continue;
+
// is this cache entry the most specific so far?
specificity = self.filterCache[id][key].length;
- if (query.indexOf(key) == 0 && specificity > maxSpecificity) {
+ if (specificity < optSpecificity) {
source = self.filterCache[id][key];
- maxSpecificity = specificity;
+ optSpecificity = specificity;
}
}