From 1366a5817aaf7daaeefc53e2e4d924bd1470d238 Mon Sep 17 00:00:00 2001 From: Anton Khodakivskiy Date: Wed, 31 Jul 2013 02:00:10 +0300 Subject: [PATCH] Added an option to disable bloom filtering --- extension/locale/en-US/options.dtd | 4 ++++ extension/options.xul | 2 ++ extension/packages/bloomfilter.coffee | 10 +++++++++- extension/packages/marker.coffee | 19 +++++++++++++------ extension/packages/prefs.coffee | 17 ++++++++++------- 5 files changed, 38 insertions(+), 14 deletions(-) diff --git a/extension/locale/en-US/options.dtd b/extension/locale/en-US/options.dtd index 40d062e..b650f7b 100644 --- a/extension/locale/en-US/options.dtd +++ b/extension/locale/en-US/options.dtd @@ -13,3 +13,7 @@ Wildcards allowed: *, !"> + + + + diff --git a/extension/options.xul b/extension/options.xul index bbf40c2..7afb618 100644 --- a/extension/options.xul +++ b/extension/options.xul @@ -13,4 +13,6 @@ title="&pref.leave_dt_on_esc.title;" desc="&pref.leave_dt_on_esc.desc;" /> + diff --git a/extension/packages/bloomfilter.coffee b/extension/packages/bloomfilter.coffee index 92ac04f..7ae4b09 100644 --- a/extension/packages/bloomfilter.coffee +++ b/extension/packages/bloomfilter.coffee @@ -137,6 +137,13 @@ })(typeof exports !== "undefined" ? exports : this); ` +class DummyBloomFilter + save: -> + add: -> + test: -> + size: -> + popcnt: -> + class SerializableBloomFilter extends exports.BloomFilter constructor: (@prefName, m, k) -> if data = getPref(@prefName) @@ -149,4 +156,5 @@ class SerializableBloomFilter extends exports.BloomFilter setPref(@prefName, data) -exports.SerializableBloomFilter = SerializableBloomFilter +exports.SerializableBloomFilter = SerializableBloomFilter +exports.DummyBloomFilter = DummyBloomFilter diff --git a/extension/packages/marker.coffee b/extension/packages/marker.coffee index 191a53d..f65071b 100644 --- a/extension/packages/marker.coffee +++ b/extension/packages/marker.coffee @@ -1,8 +1,14 @@ -{ SerializableBloomFilter } = require 'bloomfilter' +{ SerializableBloomFilter +, DummyBloomFilter } = require 'bloomfilter' + +{ getPref } = require 'prefs' HTMLDocument = Ci.nsIDOMHTMLDocument HTMLAnchorElement = Ci.nsIDOMHTMLAnchorElement +realBloomFilter = new SerializableBloomFilter('hints_bloom_data', 256 * 32, 16) +dummyBloomFilter = new DummyBloomFilter() + # Marker class wraps the markable element and provides # methods to manipulate the markers class Marker @@ -13,6 +19,9 @@ class Marker @markerElement = document.createElement('div') @markerElement.className = 'VimFxReset VimFxHintMarker' + Object.defineProperty(this, 'bloomFilter', get: -> + if getPref('hints_bloom_on') then realBloomFilter else dummyBloomFilter) + # Shows the marker show: -> @markerElement.className = 'VimFxReset VimFxHintMarker' @@ -100,15 +109,13 @@ class Marker calcBloomRating: -> rating = 1 for feature, weight of @extractBloomFeatures() - rating += if Marker.bloomFilter.test(feature) then weight else 0 + rating += if @bloomFilter.test(feature) then weight else 0 return rating reward: -> for feature, weight of @extractBloomFeatures() - Marker.bloomFilter.add(feature) - Marker.bloomFilter.save() - -Marker.bloomFilter = new SerializableBloomFilter('hint_bloom_data', 256 * 32, 16) + @bloomFilter.add(feature) + @bloomFilter.save() exports.Marker = Marker diff --git a/extension/packages/prefs.coffee b/extension/packages/prefs.coffee index c907103..3ebb231 100644 --- a/extension/packages/prefs.coffee +++ b/extension/packages/prefs.coffee @@ -6,13 +6,16 @@ PREF_BRANCH = 'extensions.VimFx.' # All used preferences should be mentioned here becuase # preference type is derived from here DEFAULT_PREF_VALUES = - addon_id: 'VimFx@akhodakivskiy.github.com' - hint_chars: 'fjdksla;ghrueiwovncm' - disabled: false - scroll_step_lines: 6 - black_list: '*mail.google.com*' - blur_on_esc: true - leave_dt_on_esc: false + addon_id: 'VimFx@akhodakivskiy.github.com' + hint_chars: 'fjdksla;ghrueiwovncm' + disabled: false + scroll_step_lines: 6 + black_list: '*mail.google.com*' + blur_on_esc: true + leave_dt_on_esc: false + hints_bloom_data: '' + hints_bloom_on: true + getBranchPref = (branch, key, defaultValue) -> type = branch.getPrefType(key) -- 2.39.3