From 89d88496c813119511b889b6c42638c9159c2c0c Mon Sep 17 00:00:00 2001 From: John Foerch Date: Sat, 1 Dec 2012 23:04:53 -0500 Subject: [PATCH] minibuffer.read_object_property: replacement for complete_with_mappings complete_with_mappings was misnamed, miscategorized, and generally a bad way to do what it did. resolves issue426 --- modules/minibuffer-completion.js | 21 --------------------- modules/minibuffer-read.js | 19 +++++++++++++++++++ modules/page-modes/wikipedia.js | 7 +++---- 3 files changed, 22 insertions(+), 25 deletions(-) diff --git a/modules/minibuffer-completion.js b/modules/minibuffer-completion.js index 929df24..f1811b9 100644 --- a/modules/minibuffer-completion.js +++ b/modules/minibuffer-completion.js @@ -355,25 +355,4 @@ function nest_completions (completions, prefix, suffix) { } -/** - * Generic simple completer for associative arrays. - * - * - `options' is an associative array, where the key represents a string that the - * user can complete to. - * - `prompt' is the string to show in the minibuffer. - */ -function completer_with_mappings (options, prompt) { - var completer = all_word_completer( - $completions = function (push) { - for (var i in options) - push(i); - }); - yield co_return( - yield get_recent_conkeror_window().minibuffer.read( - $prompt = prompt, - $completer = completer - ) - ); -} - provide("minibuffer-completion"); diff --git a/modules/minibuffer-read.js b/modules/minibuffer-read.js index fde7669..6911507 100644 --- a/modules/minibuffer-read.js +++ b/modules/minibuffer-read.js @@ -577,4 +577,23 @@ minibuffer.prototype.read_preference = function () { yield co_return(result); }; + +define_keywords("$object"); +minibuffer.prototype.read_object_property = function () { + keywords(arguments, + $prompt = "Property:"); + var o = arguments.$object || {}; + var result = yield this.read( + $prompt = arguments.$prompt, + $completer = new prefix_completer( + $completions = function (push) { + for (var i in o) + push(i); + }), + $match_required, + $space_completes); + yield co_return(result); +}; + + provide("minibuffer-read"); diff --git a/modules/page-modes/wikipedia.js b/modules/page-modes/wikipedia.js index dfb6a15..9556a32 100644 --- a/modules/page-modes/wikipedia.js +++ b/modules/page-modes/wikipedia.js @@ -14,9 +14,6 @@ * - Probably more to come. **/ -require("minibuffer-completion.js"); - - /*** VARIABLES ***/ define_variable("wikipedia_didyoumean_follow_first_hit", false, @@ -116,7 +113,9 @@ interactive("wikipedia-other-language", "Queries the user for another language to view the current article in.", function (I) { var options = wikipedia_other_language(I); - var chosen = yield completer_with_mappings(options, "Languages:"); + var chosen = yield I.minibuffer.read_object_property( + $prompt = "Languages:", + $object = options); I.buffer.document.location = options[chosen]; }); -- 2.11.4.GIT