diff --git a/NEWS b/NEWS index 4db4ae28..1ccc1aea 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,7 @@
 2007-XX-XX:
 	* version 0.5.3
+	* options are no longer stored in preferences - use the RC file instead
 	* added new :mkvimperatorc command
 	* remove :redraw and Ctrl-L commands as they rely on FF3 features
 	* :ls, :history and :bmarks output is now hyperlinked
diff --git a/content/options.js b/content/options.js
index 0a4b31af..e2be66e7 100644
--- a/content/options.js
+++ b/content/options.js
@@ -31,14 +31,13 @@ function Option(names, type, extra_info) //{{{
     if (!names || !type)
         return null;
 
+    var value = null;
+
     this.name = names[0];
     this.names = names;
     this.usage = this.names;
     this.type = type;
 
-    this.setter = function(value) { Options.setPref(this.name, value); };
-    this.getter = function() { return Options.getPref(this.name); };
-
     if (extra_info)
     {
         if (extra_info.usage)
@@ -53,6 +52,8 @@ function Option(names, type, extra_info) //{{{
         else
             this.default_value = null;
 
+        value = this.default_value;
+
         if (extra_info.setter)
             this.setter = extra_info.setter;
         if (extra_info.getter)
@@ -75,8 +76,22 @@ function Option(names, type, extra_info) //{{{
     }
 
     // NOTE: forced defaults need to use Options.getPref
-    Option.prototype.__defineGetter__("value", function() { return this.getter.call(this); });
-    Option.prototype.__defineSetter__("value", function(value) { this.setter.call(this, value); });
+    this.__defineGetter__("value",
+        function()
+        {
+            if (this.getter)
+                this.getter.call(this);
+            return value;
+        }
+    );
+    this.__defineSetter__("value",
+        function(new_value)
+        {
+            value = new_value;
+            if (this.setter)
+                this.setter.call(this, value);
+        }
+    );
 
     // TODO: add is[Type]() queries for use in set()?
     //     : add isValid() or just throw an exception?
@@ -445,7 +460,7 @@ function Options() //{{{
                   "
  • T: toolbar
  • " + "
  • b: bookmark bar
  • " + "", - setter: function(value) { Options.setPref("guioptions", value); setGuiOptions(value); }, + setter: function(value) { setGuiOptions(value); }, default_value: "", validator: function (value) { if (/[^mTb]/.test(value)) return false; else return true; } } @@ -472,7 +487,7 @@ function Options() //{{{ addOption(new Option(["hlsearch", "hls"], "boolean", { short_help: "Highlight previous search pattern matches", - setter: function(value) { Options.setPref("hlsearch", value); if (value) vimperator.search.highlight(); else vimperator.search.clear(); }, + setter: function(value) { if (value) vimperator.search.highlight(); else vimperator.search.clear(); }, default_value: false } )); @@ -507,7 +522,7 @@ function Options() //{{{ "" + "NOTE: laststatus=1 not implemented yet.", default_value: 2, - setter: function(value) { Options.setPref("laststatus", value); setStatusLine(value); }, + setter: function(value) { setStatusLine(value); }, validator: function (value) { if (value >= 0 && value <= 2) return true; else return false; } } )); @@ -545,7 +560,7 @@ function Options() //{{{ "" + "NOTE: This option does not change the popup blocker of Firefox in any way.", default_value: 1, - setter: function(value) { Options.setPref("popups", value); setPopups(value); }, + setter: function(value) { setPopups(value); }, validator: function (value) { if (value >= 0 && value <= 3) return true; else return false; } } )); @@ -606,7 +621,7 @@ function Options() //{{{ "
  • 1: Show tab bar only if more than one tab is open
  • " + "
  • 2: Always show tab bar
  • " + "", - setter: function(value) { Options.setPref("showtabline", value); setShowTabline(value); }, + setter: function(value) { setShowTabline(value); }, default_value: 2, validator: function (value) { if (value >= 0 && value <= 2) return true; else return false; } } @@ -624,7 +639,7 @@ function Options() //{{{ help: "Vimperator changes the browser title from \"Title of web page - Mozilla Firefox\" to " + "\"Title of web page - Vimperator\".
    If you don't like that, you can restore it with: " + ":set titlestring=Mozilla Firefox.", - setter: function(value) { Options.setPref("titlestring", value); setTitleString(value); }, + setter: function(value) { setTitleString(value); }, default_value: "Vimperator" } )); @@ -649,7 +664,7 @@ function Options() //{{{ addOption(new Option(["visualbell", "vb"], "boolean", { short_help: "Use visual bell instead of beeping on errors", - setter: function(value) { Options.setPref("visualbell", value); Options.setFirefoxPref("accessibility.typeaheadfind.enablesound", !value); }, + setter: function(value) { Options.setFirefoxPref("accessibility.typeaheadfind.enablesound", !value); }, default_value: false } ));