From aa2bddd73d8359ad944fde7c424d2d89c0ccf0d9 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sat, 14 Dec 2013 09:24:36 -0500 Subject: [PATCH] * lisp/icomplete.el (icomplete-completions): Make sure the prefix is already displayed elsewhere before hiding it. --- lisp/ChangeLog | 20 ++++++++++++-------- lisp/icomplete.el | 22 +++++++++++++--------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 62045b9cb6..129dde734a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-12-14 Stefan Monnier + + * icomplete.el (icomplete-completions): Make sure the prefix is already + displayed elsewhere before hiding it. + 2013-12-14 Dmitry Gutov * progmodes/ruby-mode.el (ruby-smie-rules): Return nil before @@ -9,12 +14,11 @@ 2013-12-13 Teodor Zlatanov * progmodes/cfengine.el: Fix `add-hook' doc. - (cfengine-mode-syntax-functions-regex): - Initialize sensibly. + (cfengine-mode-syntax-functions-regex): Initialize sensibly. (cfengine3--current-word): Fix parameters. (cfengine3-make-syntax-cache): Simplify further. - (cfengine3-completion-function, cfengine3--current-function): Use - `assq' for symbols. + (cfengine3-completion-function, cfengine3--current-function): + Use `assq' for symbols. (cfengine3--current-function): Fix `cfengine3--current-word' call. 2013-12-13 Glenn Morris @@ -31,8 +35,8 @@ cf-promises doesn't run. (cfengine3--current-word): Reimplement using `cfengine-mode-syntax-functions-regex'. - (cfengine3-completion-function, cfengine3--current-function): Use - `cfengine3-make-syntax-cache' directly. + (cfengine3-completion-function, cfengine3--current-function): + Use `cfengine3-make-syntax-cache' directly. (cfengine3-clear-syntax-cache): New function. (cfengine3-make-syntax-cache): Simplify and create `cfengine-mode-syntax-functions-regex' on demand. @@ -85,8 +89,8 @@ 2013-12-12 Fabián Ezequiel Gallina - * progmodes/python.el (python-indent-calculate-indentation): Fix - de-denters cornercase. (Bug#15731) + * progmodes/python.el (python-indent-calculate-indentation): + Fix de-denters cornercase. (Bug#15731) 2013-12-12 Stefan Monnier diff --git a/lisp/icomplete.el b/lisp/icomplete.el index 7620adb3c9..fccb2644cc 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -416,18 +416,22 @@ are exhibited within the square braces.)" ;; one line, increase the allowable space accordingly. (/ prospects-len (window-width))) (window-width))) + ;; Find the common prefix among `comps'. + ;; We can't use the optimization below because its assumptions + ;; aren't always true, e.g. when completion-cycling (bug#10850): + ;; (if (eq t (compare-strings (car comps) nil (length most) + ;; most nil nil completion-ignore-case)) + ;; ;; Common case. + ;; (length most) + ;; Else, use try-completion. (prefix (when icomplete-hide-common-prefix (try-completion "" comps))) (prefix-len - ;; Find the common prefix among `comps'. - ;; We can't use the optimization below because its assumptions - ;; aren't always true, e.g. when completion-cycling (bug#10850): - ;; (if (eq t (compare-strings (car comps) nil (length most) - ;; most nil nil completion-ignore-case)) - ;; ;; Common case. - ;; (length most) - ;; Else, use try-completion. - (and (stringp prefix) (length prefix))) ;;) + (and (stringp prefix) + ;; Only hide the prefix if the corresponding info + ;; is already displayed via `most'. + (string-prefix-p prefix most t) + (length prefix))) ;;) prospects comp limit) (if (or (eq most-try t) (not (consp (cdr comps)))) (setq prospects nil) -- 2.20.1