Subject: Re: bug#7238: 24.0.50; find-library gives wrong library - REGRESSION
From: Stefan Monnier <[email-masked]>
To: "Drew Adams" <[email-masked]>
Date: Mon, 18 Oct 2010 17:02:29 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

> emacs -Q
> M-x find-library dired. TAB
 
> TAB completes to dired.elc. It should, by priority, complete to
> dired.el, as it used to do (Emacs 22, 23 etc.).

Indeed.  The behavior of M-x find-library RET dired TAB is odd, but the
one for dired. TAB is really a bug, which I fixed with the patch below.
Thanks,

        Stefan

=== modified file 'lisp/files.el'
--- lisp/files.el	2010-10-02 13:21:43 +0000
+++ lisp/files.el	2010-10-18 20:51:50 +0000
@@ -801,9 +801,10 @@
       ;; Switching from names to names+fullnames creates a non-monotonicity
       ;; which can cause problems with things like partial-completion.
       ;; To minimize the problem, filter out completion-regexp-list, so that
-      ;; M-x load-library RET t/x.e TAB finds some files.
-      (if completion-regexp-list
-          (setq names (all-completions "" names)))
+      ;; M-x load-library RET t/x.e TAB finds some files.  Also remove elements
+      ;; from `names' which only matched `string' when they still had
+      ;; their suffix.
+      (setq names (all-completions string names))
       ;; Remove duplicates of the first element, so that we can easily check
       ;; if `names' really only contains a single element.
       (when (cdr names) (setcdr names (delete (car names) (cdr names))))