From 8f0fde218ff8fe91cedd9b9dce66b1535e6df56e Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Thu, 23 Feb 2012 10:36:07 -0500 Subject: [PATCH] * lisp/icomplete.el (icomplete-completions): Replace last fix. Fixes: debbugs:10850 --- lisp/ChangeLog | 5 +++++ lisp/icomplete.el | 22 +++++++++++----------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7e7588d69e8..e4fc0ea90d3 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-02-23 Stefan Monnier + + * icomplete.el (icomplete-completions): Replace last fix with a better + one (bug#10850). + 2012-02-23 Dmitry Gutov * emacs-lisp/lisp.el (beginning-of-defun-raw): Don't call end-of-defun diff --git a/lisp/icomplete.el b/lisp/icomplete.el index a9719651957..97a14b12891 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -333,23 +333,23 @@ are exhibited within the square braces.)" (window-width))) (prefix-len ;; Find the common prefix among `comps'. - (if (eq t (compare-strings (car comps) nil (length most) - most nil nil completion-ignore-case)) - ;; Common case. - (length most) - ;; Else, use try-completion. - (let ((comps-prefix (try-completion "" comps))) - (and (stringp comps-prefix) - (length comps-prefix))))) + ;; 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. + (let ((comps-prefix (try-completion "" comps))) + (and (stringp comps-prefix) + (length comps-prefix)))) ;;) prospects most-is-exact comp limit) (if (eq most-try t) ;; (or (null (cdr comps)) (setq prospects nil) (while (and comps (not limit)) (setq comp - (if (and prefix-len (<= prefix-len (length (car comps)))) - (substring (car comps) prefix-len) - (car comps)) + (if prefix-len (substring (car comps) prefix-len) (car comps)) comps (cdr comps)) (cond ((string-equal comp "") (setq most-is-exact t)) ((member comp prospects)) -- 2.39.2