I think locate-library has an extra parameter nosuffix, so (locate-library "tramp.el" 'nosuffix) will find "tramp.el." I guess for backward compatibility we can set nosuffix to t whenever the name has a valid suffix already.


On Sun, May 11, 2014 at 10:03 AM, Eli Zaretskii <eliz@gnu.org> wrote:
> From: Alex Kosorukoff <alex@3form.com>
> Date: Sun, 11 May 2014 09:06:10 -0700
>
> locate-library incorrectly generates a set of suffixes to extend the
> base library name (".elc" ".elc.gz" ".el" ".el.gz" "" ".gz"), while it
> should be just (".elc" ".elc.gz" ".el" ".el.gz") when nosuffix is
> nil. This leads to spurious paths found, like name.gz. I found
> this issue because (locate-library "tramp") was returning
> "/home/alex/.emacs.d/trump" not "../lisp/net/trum.elc". The workaround
> is (locate-file "tramp" load-path (get-load-suffixes))

What if I say

  (locate-library "tramp.el")

Shouldn't it be able to find tramp.el.gz then?