From f75e0eafd7a95e7b63a3a197c82d0c8bb5656aa2 Mon Sep 17 00:00:00 2001 From: Jeremy Maitin-Shepard Date: Sat, 9 Feb 2008 18:00:10 -0500 Subject: [PATCH] Fix minibuffer handling for prefix completion It will now work to type: M-x follow RET --- modules/minibuffer-completion.js | 27 +++++++++++++++++++-------- modules/minibuffer-read.js | 2 ++ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/modules/minibuffer-completion.js b/modules/minibuffer-completion.js index 8fce8c0..82cef54 100644 --- a/modules/minibuffer-completion.js +++ b/modules/minibuffer-completion.js @@ -103,15 +103,26 @@ function prefix_completer() if (pos == 0 && conservative) return undefined; var input_prefix = input.substring(0,pos); + var default_completion = null; + var i = 0; var data = arr.filter(function (x) { - var s = get_string(x); - return s.length >= pos && s.substring(0,pos) == input_prefix; - }); + var s = get_string(x); + var retval; + + if (s == input) { + default_completion = i; + retval = true; + } else + retval = (s.length >= pos && s.substring(0,pos) == input_prefix); + if (retval) + ++i; + return retval; + }); if (data.length > 0) { - var a = get_string(data[0]); - var b = get_string(data[data.length - 1]); - var i = get_common_prefix_length(a, b); + let a = get_string(data[0]); + let b = get_string(data[data.length - 1]); + let i = get_common_prefix_length(a, b); if (i > pos) common_prefix = a.substring(0,i); } @@ -122,8 +133,8 @@ function prefix_completer() apply : function (i, m) apply_partial_completion(get_string(data[i]), 0, pos, input, m), get_value : function(i) get_value(data[i]), apply_common_prefix: (common_prefix && - function (m) apply_partial_completion(common_prefix, 0, pos, input, m)) - + function (m) apply_partial_completion(common_prefix, 0, pos, input, m)), + default_completion: default_completion }; } } diff --git a/modules/minibuffer-read.js b/modules/minibuffer-read.js index 8d4e685..d24845c 100644 --- a/modules/minibuffer-read.js +++ b/modules/minibuffer-read.js @@ -256,6 +256,8 @@ text_entry_minibuffer_state.prototype = { if (this.match_required) { if (c.count == 1) i = 0; + else if (c.default_completion != null) + i = c.default_completion; else if (this.default_completion && this.completions.index_of) i = this.completions.index_of(this.default_completion); } -- 2.11.4.GIT