* lisp/icomplete.el (icomplete-completions): Replace last fix.

Fixes: debbugs:10850
This commit is contained in:
Stefan Monnier 2012-02-23 10:36:07 -05:00
parent 49fe4321fb
commit 8f0fde218f
2 changed files with 16 additions and 11 deletions

View file

@ -1,3 +1,8 @@
2012-02-23 Stefan Monnier <monnier@iro.umontreal.ca>
* icomplete.el (icomplete-completions): Replace last fix with a better
one (bug#10850).
2012-02-23 Dmitry Gutov <dgutov@yandex.ru>
* emacs-lisp/lisp.el (beginning-of-defun-raw): Don't call end-of-defun

View file

@ -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))