From 52fe2c4f58d71f583a57bfd0c3f3cfb0ae50349d Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Sun, 7 Aug 2011 23:47:48 -0400 Subject: [PATCH] Muck with stringmap/sitemap/stringmap default value completions. --- common/modules/options.jsm | 20 ++++++++++++++++++++ common/modules/styles.jsm | 1 + 2 files changed, 21 insertions(+) diff --git a/common/modules/options.jsm b/common/modules/options.jsm index 7fa15ae8..5322aa9d 100644 --- a/common/modules/options.jsm +++ b/common/modules/options.jsm @@ -428,6 +428,7 @@ var Option = Class("Option", { let re = util.regexp(Option.dequote(val), flags); re.bang = bang; re.result = result !== undefined ? result : !bang; + re.key = re.bang + Option.quote(util.regexp.getSource(re), /^!|:/); re.toString = function () Option.unparseRegexp(this, keepQuotes); return re; }, @@ -1454,6 +1455,25 @@ var Options = Module("options", { context.advance(Option._splitAt); context.filter = Option.dequote(context.filter); + function val(obj) { + if (isArray(opt.defaultValue)) { + let val = array.nth(obj, function (re) re.key == extra.key, 0); + return val && val.result; + } + if (Set.has(opt.defaultValue, extra.key)) + return obj[extra.key]; + } + + if (extra.key && extra.value != null) { + context.fork("default", 0, this, function (context) { + context.completions = [ + [val(opt.value), _("option.currentValue")], + [val(opt.defaultValue), _("option.defaultValue")] + ].filter(function (f) f[0] !== "" && f[0] != null); + }); + context = context.fork("stuff", 0); + } + context.title = ["Option Value"]; context.quote = Commands.complQuote[Option._quote] || Commands.complQuote[""]; // Not Vim compatible, but is a significant enough improvement diff --git a/common/modules/styles.jsm b/common/modules/styles.jsm index 70608b9f..97cb87ca 100644 --- a/common/modules/styles.jsm +++ b/common/modules/styles.jsm @@ -434,6 +434,7 @@ var Styles = Module("Styles", { else test = function test(uri) { try { return util.isSubdomain(uri.host, filter); } catch (e) { return false; } }; test.toString = function toString() filter; + test.key = filter; if (arguments.length < 2) return test; return test(arguments[1]);