From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Alex Kosorukoff Newsgroups: gmane.emacs.bugs Subject: bug#17467: 24.3; locate-library returning spurious path Date: Sun, 11 May 2014 21:36:22 -0700 Message-ID: References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=001a1134bdda74595a04f92c7ec7 X-Trace: ger.gmane.org 1399869446 27321 80.91.229.3 (12 May 2014 04:37:26 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 12 May 2014 04:37:26 +0000 (UTC) Cc: 17467 <17467@debbugs.gnu.org> To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon May 12 06:37:18 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WjhzI-0000rj-Ld for geb-bug-gnu-emacs@m.gmane.org; Mon, 12 May 2014 06:37:16 +0200 Original-Received: from localhost ([::1]:35286 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WjhzH-0003Ne-QW for geb-bug-gnu-emacs@m.gmane.org; Mon, 12 May 2014 00:37:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:33215) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wjhz9-0003NZ-At for bug-gnu-emacs@gnu.org; Mon, 12 May 2014 00:37:12 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wjhz4-0005D7-Bg for bug-gnu-emacs@gnu.org; Mon, 12 May 2014 00:37:07 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:42637) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wjhz4-0005D3-7E for bug-gnu-emacs@gnu.org; Mon, 12 May 2014 00:37:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Wjhz3-0008NR-Ma for bug-gnu-emacs@gnu.org; Mon, 12 May 2014 00:37:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Alex Kosorukoff Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 12 May 2014 04:37:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17467 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 17467-submit@debbugs.gnu.org id=B17467.139986941232178 (code B ref 17467); Mon, 12 May 2014 04:37:01 +0000 Original-Received: (at 17467) by debbugs.gnu.org; 12 May 2014 04:36:52 +0000 Original-Received: from localhost ([127.0.0.1]:59988 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Wjhyt-0008Mu-3z for submit@debbugs.gnu.org; Mon, 12 May 2014 00:36:52 -0400 Original-Received: from mail-qa0-f51.google.com ([209.85.216.51]:37500) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Wjhyp-0008Ma-Vs for 17467@debbugs.gnu.org; Mon, 12 May 2014 00:36:49 -0400 Original-Received: by mail-qa0-f51.google.com with SMTP id w8so6451875qac.38 for <17467@debbugs.gnu.org>; Sun, 11 May 2014 21:36:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; bh=sycVzAnmtb+qnLQ09v2yogGLrF0L7fgOkpl2bTQIXKY=; b=erANLM6p1EWBwHjUzb/dl/xJYR9CiFuixD/onGcZGcj8sd7ks3rfSN1Kt57lC8kkmu uMHAdlXX5rLWPbuHPk6TqDugvA3hQNm8KQj5TSnmZw/jW3X0chDWrDFcGjVV858I8DDT 2bC7wVwS+sGIjPGG3TDLcluPA8F32xITRWiaY7aluWGw9sYDQt7K8mrh+vXmw8Cd9+X7 UF7n/cKz39C4lzMJr/O9XP7RzpkBL9EfSpGB5n5VKU9HcGtDJ/VuLicQ5cXHwz6VB6HC L9a6F46S5z4yAImxFFabOPvoWY+7tYLElPZTacWMYZT+XU31LmOmOwa7G3YMF8Sd0D2E hXGw== X-Received: by 10.229.236.1 with SMTP id ki1mr34759492qcb.8.1399869402271; Sun, 11 May 2014 21:36:42 -0700 (PDT) Original-Received: by 10.140.96.195 with HTTP; Sun, 11 May 2014 21:36:22 -0700 (PDT) In-Reply-To: X-Google-Sender-Auth: apUIXmfzmeAbLO26mf2VK109Vk8 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:88953 Archived-At: --001a1134bdda74595a04f92c7ec7 Content-Type: text/plain; charset=UTF-8 I like the idea of optimizing out the second string-match, though that variant matched tramp.el.old which is not a valid library name. Here is a modifed version using the same idea except it skips files like tramp.el.old. # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: alex@3form.com-20140512042218-zjdg3v68bbja2rj2 # target_branch: :parent # testament_sha1: 330ab5b4527e49ea46d8d16a6d47e5822247ce77 # timestamp: 2014-05-11 21:23:50 -0700 # base_revision_id: monnier@iro.umontreal.ca-20140511034953-\ # 1mzcrftziwhrw9hl # # Begin patch === modified file 'lisp/subr.el' --- lisp/subr.el 2014-04-09 01:48:07 +0000 +++ lisp/subr.el 2014-05-12 04:22:18 +0000 @@ -1857,10 +1857,14 @@ load-path (get-load-suffixes))) nil nil t)) - (let ((file (locate-file library - (or path load-path) - (append (unless nosuffix (get-load-suffixes)) - load-file-rep-suffixes)))) + (let ((file + (locate-file + library + (or path load-path) + (unless nosuffix + (if (string-match "\\.elc?\\(\\.gz\\)?\\'" library) + (if (= 2 (length (match-data))) load-file-rep-suffixes) + (get-load-suffixes)))))) (if interactive-call (if file (message "Library is file %s" (abbreviate-file-name file)) # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWdDpudEABgd/gDN0FUFQ4//3 8wgABL////BgCI+FAA0AAAAAAAAMkk2p6mmgBoDQaADTQAABoGlQZPSMmynpqDJo0AaZADTIyABz CYBMAJhMJpgAAEyaaBjmEwCYATCYTTAAAJk00DHMJgEwAmEwmmAAATJpoGCpRAJoATEDRDQCYJT1 NNqY1NkylAzQWMD1e2laABxxxTQHTYJXxEfUiG4Q6b22N1Uag1frP3pbf2aB7XuzlcK84k5F8VNn K7C8uNBohJUOdK//P1n8bZy3bNmOF6+X2+h/c3FChQf7/zDTaaSkcqN+uu/7XlheXcb+7RLjabTu P27z/NnCO/mwLDn/FKKlFBiUHHTs3fk/3T+uRYAsB4BdK8urI8LfFgkLYyS2WyCO5UQmtUUEMWlG zCpPr9qvxRVZXznh5+Va2K/lUqoc7pu4dvX+RkjytniPmaD/hD4GJ5o2+573zPmWFJ/EuPsT5sF7 mXta2bUb099NVld5uEfL5kp0ltH3PA47Nta1rWta1+Px8PlTbiJYcq/XF1wJvdameWVgilnVjdWk xvQv+zpoWXSQuRejL+HbVarMLMpf26a1ywJSizNrtJZC9haxswi4/Wmd6OCO9G+wsVHDcVhaWztM teiJdp29o3eo03xKEoRxYpFxebbktJwu36bqr+zRhdy4bDkjST9kyybzSIsJara5G044Zf3G7Zwf rwTPYjoTrna5aCap2U6SZDiYMOiNqNrDdxpZZz4Z8+2YtFV/bmf8WdlHKytPxSy4msoI0prJRJhc m7v5JxU8GCzQ0GGWom/Cps09tsEupZqmGlKuiquk7JkArLJwBSQA4Yjggswlu0AkkXDE0r6pv4WT NbwXqs+xr7MNSxGqmxhJqL64VoyLuN91Nd+ei223D9hFiPYm5GzDDKUpLK8M9QjffUmGmmBLkzrf Teowa7yU3XWYyOXibKFKFGNqK3NEpa30HEZNbNgs3adVJnkuRozdqNRu0YeNX6IsGAizX10tm062 79MxxRqpvW5o32KotcDbqb11VlyODLRe1f2K2NTJotYfyT0JWXreaOGSzTfZOK9WyxoZ25Uo3b54 W4drBjaorX+kyXcGtqDsNFpQacOWlru+SPl62/bMmubsquHfsus02LF3ZfoqXNFYbjFJ5Iu0sW3D JUlLM0USi9Rwkb7tSjxpuNunLnlfYjORmX18fCsi/GccJvbjQzWGPA219SK604WzHpdymktuJ2rt 3DabbSZ6GmLmdIXZs4t2zTbZjOtd/DJdjctlDeLWWu9sxuUWYV1vdPij3W5YFZNsm7EKlk1lLDMp eXlSWlSULylowiX4FDcdD/senkaPEo+PhSlKUpWhYUPE/Y4HL7UfQR5nka00UpIpQp/FbDafVH7v SlNcrw3nAyg/HvsHSm47lLO24PV39/2S71+7Q8dczcOrDyVvyR9/nJluXcDxiWnqdqnhFFVKxRVS sUVUr+57e47jE2I+WwiyRYj0jXQ2JcVPjg5O5h320596L/cv73bXVdYlGhRlOa7u8ZPzJ0Ocj6E+ qPeHBzer5Y6eV99k8rrNS6RvYbqccMPyn0OU9ibOeezo1XPzRXPDn0Ydvmeo7+yhuEcD2zC6TLc7 vaadm+vVGor0ncou2w8MdBNbmuNBM+/LplXbXKdGC2i7fLtvknrGtGo77yZ+MnclEya8eKvGmv64 XfYorZcurZXPLLuPQtuk0lKmBnEw0Ph7i9su2Mu967yUy8ftNzAnTuNvHG7Tcfc09T1pL8d2V55P Syw9ffws/YoM5vRu5j4Eokx8fA8jt8z8CwpkeYp5zQFSRiS0/NgdCs9NnnPHt9S73188uMxY4PB4 +BLbu7TjqW4W+NmyaRr1EsehjuHwkn1+H0KT5H4NMk920RZHQ8JQtjinJHwg0zsu8Uek5TrFI9lP YGnrPfOBOpic0U7uGqRTWcz+iUKl5vOwdILBz+MTXojDuN5acA/Q+AbT2nSaz+SkjAu0p7E3IwTq jvjicomB3yO6J1KQaQ0lZDzifR1qV6ZlP5MhHuR/54+RSPwXeB6z+bpfNCptPYQ4iN6KlYvl9TQe ZvHUwLDSXFR7ZfcGkuLIlhRM8zgZC4wOwl5FhhUlCddRkTZEr7D8vAkYB1N4vjge2J4GmCfWwn9H E3bWBufVGk49ChQlF6wYGfK80E5ouUo9CZp7EULIlkk2FxGbE8DUOUy9mMfNM4idCy3aXl1p7JqW FIUFpxKF1SsajXSlFKUpkaAoXz20lKSlJTEtMCXxOkeo/sULzRN0oUv1Ixp2FZciwsPuK7CiKmsx HmeVwz6mkZRNAUilSypNp1nqJeThSSfRFp9DE7C72IvT7kzJ2BtjGUjVPX5E1k0WmBRKCKQoTCSL kfojNHrRqRn90b6uz0mmNfbO9Nh/+LuSKcKEhodNzog= On Sun, May 11, 2014 at 7:18 PM, Stefan Monnier wrote: > > I think these file names are more appropriate for data files, not > > executable ones. It is undesirable that a name "tramp.gz" will shadow a > > valid library file "tramp.elc" that won't be found as a result. > > I think I'm beginning to see what you mean. So far we have simply > considered "if it hurts, don't do it". And it worked well enough. > > > When you say those names aren't spurious, do you have a particular > > example of an emacs elisp library in mind which file name ends with > > a suffix other than .el .elc .el.gz .elc.gz? > > There are a few (~/.emacs being the most obvious), but admittedly, > I think they all share the property of not being searched for in > load-path. So we could probably strengthen the search along the lines > you suggest without (hopefully) breaking existing code with a hack along > the lines of the one below. > > > Stefan > > > === modified file 'lisp/subr.el' > --- lisp/subr.el 2014-04-15 17:03:15 +0000 > +++ lisp/subr.el 2014-05-12 02:15:04 +0000 > @@ -1878,10 +1878,15 @@ > load-path (get-load-suffixes))) > nil nil > t)) > - (let ((file (locate-file library > - (or path load-path) > - (append (unless nosuffix (get-load-suffixes)) > - load-file-rep-suffixes)))) > + (let* ((suffixes > + (nconc (unless nosuffix (get-load-suffixes)) > + (when (or (file-name-absolute-p library) > + ;; (load "foo.el") should find /bar/foo.el.gz, > + ;; but (load "foo") should not find > /bar/foo.gz. > + (string-match "\\.el\\(\\.[[:alnum:]]+\\)?" > + library)) > + load-file-rep-suffixes))) > + (file (locate-file library (or path load-path) suffixes))) > (if interactive-call > (if file > (message "Library is file %s" (abbreviate-file-name file)) > > --001a1134bdda74595a04f92c7ec7 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I like the idea of optimizing out the second string-match,= though that variant matched tramp.el.old which is not a valid library name= . Here is a modifed version using the same idea except it skips files like = tramp.el.old.

# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: alex@3form.com-20140512042218-zjdg3v68bbja2rj2
= # target_branch: :parent
# testament_sha1: 330ab5b4527e49ea46d8d1= 6a6d47e5822247ce77
# timestamp: 2014-05-11 21:23:50 -0700
# base_revision_id: m= onnier@iro.umontreal.ca-20140511034953-\
# =C2=A0 1mzcrftziwhrw9h= l
#=C2=A0
# Begin patch
=3D=3D=3D modified fi= le 'lisp/subr.el'
--- lisp/subr.el =C2=A0 =C2=A0 =C2=A0 =C2=A02014-04-09 01:48:07 +0000<= /div>
+++ lisp/subr.el =C2=A0 =C2=A0 =C2=A0 =C2=A02014-05-12 04:22:18 += 0000
@@ -1857,10 +1857,14 @@
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 load-path (get-load-suffixes)))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0nil nil
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0t))
- =C2=A0(let ((file (locate-file l= ibrary
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(or path load-path)
- =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0(append (unless nosuffix (get-load-suffixes))
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0load-file-rep-suffixes)= )))
+ =C2=A0(let ((file
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 (= locate-file
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0library
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(or path load-path)
+ =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0(unless nosuffix
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(if (string-match "\\.= elc?\\(\\.gz\\)?\\'" library)
+ =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(if (=3D 2 (length (match-data))) load-file-= rep-suffixes)
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(= get-load-suffixes))))))
=C2=A0 =C2=A0 =C2=A0(if interactive-call
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 (if file
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (me= ssage "Library is file %s" (abbreviate-file-name file))

# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIH= Y0CiMKQlpoOTFBWSZTWdDpudEABgd/gDN0FUFQ4//3
8wgABL////BgCI+FAA0AAAAAAAAMkk2p6mmgBoDQaADTQAABoGlQZPSMmynpqDJo0AaZAD= TIyABz
CYBMAJhMJpgAAEyaaBjmEwCYATCYTTAAAJk00DHMJgEwAmEwmmAAATJpoG= CpRAJoATEDRDQCYJT1
NNqY1NkylAzQWMD1e2laABxxxTQHTYJXxEfUiG4Q6b22N1= Uag1frP3pbf2aB7XuzlcK84k5F8VNn
K7C8uNBohJUOdK//P1n8bZy3bNmOF6+X2+h/c3FChQf7/zDTaaSkcqN+uu/7XlheXcb+7R= LjabTu
P27z/NnCO/mwLDn/FKKlFBiUHHTs3fk/3T+uRYAsB4BdK8urI8LfFgkLYy= S2WyCO5UQmtUUEMWlG
zCpPr9qvxRVZXznh5+Va2K/lUqoc7pu4dvX+RkjytniPma= D/hD4GJ5o2+573zPmWFJ/EuPsT5sF7
mXta2bUb099NVld5uEfL5kp0ltH3PA47Nta1rWta1+Px8PlTbiJYcq/XF1wJvdameWVgil= nVjdWk
xvQv+zpoWXSQuRejL+HbVarMLMpf26a1ywJSizNrtJZC9haxswi4/Wmd6O= CO9G+wsVHDcVhaWztM
teiJdp29o3eo03xKEoRxYpFxebbktJwu36bqr+zRhdy4bD= kjST9kyybzSIsJara5G044Zf3G7Zwf
rwTPYjoTrna5aCap2U6SZDiYMOiNqNrDdxpZZz4Z8+2YtFV/bmf8WdlHKytPxSy4msoI0p= rJRJhc
m7v5JxU8GCzQ0GGWom/Cps09tsEupZqmGlKuiquk7JkArLJwBSQA4Yjggs= wlu0AkkXDE0r6pv4WT
NbwXqs+xr7MNSxGqmxhJqL64VoyLuN91Nd+ei223D9hFiP= Ym5GzDDKUpLK8M9QjffUmGmmBLkzrf
Teowa7yU3XWYyOXibKFKFGNqK3NEpa30HEZNbNgs3adVJnkuRozdqNRu0YeNX6IsGAizX1= 0tm062
79MxxRqpvW5o32KotcDbqb11VlyODLRe1f2K2NTJotYfyT0JWXreaOGSzT= fZOK9WyxoZ25Uo3b54
W4drBjaorX+kyXcGtqDsNFpQacOWlru+SPl62/bMmubsqu= Hfsus02LF3ZfoqXNFYbjFJ5Iu0sW3D
JUlLM0USi9Rwkb7tSjxpuNunLnlfYjORmX18fCsi/GccJvbjQzWGPA219SK604WzHpdymk= tuJ2rt
3DabbSZ6GmLmdIXZs4t2zTbZjOtd/DJdjctlDeLWWu9sxuUWYV1vdPij3W= 5YFZNsm7EKlk1lLDMp
eXlSWlSULylowiX4FDcdD/senkaPEo+PhSlKUpWhYUPE/Y= 4HL7UfQR5nka00UpIpQp/FbDafVH7v
SlNcrw3nAyg/HvsHSm47lLO24PV39/2S71+7Q8dczcOrDyVvyR9/nJluXcDxiWnqdqnhFF= VKxRVS
sUVUr+57e47jE2I+WwiyRYj0jXQ2JcVPjg5O5h320596L/cv73bXVdYlGh= RlOa7u8ZPzJ0Ocj6E+
qPeHBzer5Y6eV99k8rrNS6RvYbqccMPyn0OU9ibOeezo1X= PzRXPDn0Ydvmeo7+yhuEcD2zC6TLc7
vaadm+vVGor0ncou2w8MdBNbmuNBM+/LplXbXKdGC2i7fLtvknrGtGo77yZ+MnclEya8eK= vGmv64
XfYorZcurZXPLLuPQtuk0lKmBnEw0Ph7i9su2Mu967yUy8ftNzAnTuNvHG= 7Tcfc09T1pL8d2V55P
Syw9ffws/YoM5vRu5j4Eokx8fA8jt8z8Cwp= keYp5zQFSRiS0/NgdCs9NnnPHt9S73188uMxY4PB4
+BLbu7TjqW4W+NmyaRr1EsehjuHwkn1+H0KT5H4NMk920RZHQ8JQtjinJHwg0zsu8Uek5T= rFI9lP
YGnrPfOBOpic0U7uGqRTWcz+iUKl5vOwdILBz+MTXojDuN5acA/Q+AbT2n= Saz+SkjAu0p7E3IwTq
jvjicomB3yO6J1KQaQ0lZDzifR1qV6ZlP5MhHuR/54+RSP= wXeB6z+bpfNCptPYQ4iN6KlYvl9TQe
ZvHUwLDSXFR7ZfcGkuLIlhRM8zgZC4wOwl5FhhUlCddRkTZEr7D8vAkYB1N4vjge2J4GmC= fWwn9H
E3bWBufVGk49ChQlF6wYGfK80E5ouUo9CZp7EULIlkk2FxGbE8DUOUy9mM= fNM4idCy3aXl1p7JqW
FIUFpxKF1SsajXSlFKUpkaAoXz20lKSlJTEtMCXxOkeo/s= ULzRN0oUv1Ixp2FZciwsPuK7CiKmsx
HmeVwz6mkZRNAUilSypNp1nqJeThSSfRFp9DE7C72IvT7kzJ2BtjGUjVPX5E1k0WmBRKCK= QoTCSL
kfojNHrRqRn90b6uz0mmNfbO9Nh/+LuSKcKEhodNzog=3D
=



On Sun, May 11, 2014 at 7:18 PM, Stefan Monnier <monnier@iro.umontr= eal.ca> wrote:
> I think these file names are more appropriate for data= files, not
> executable ones. =C2=A0It is undesirable that a name "tramp.gz&qu= ot; will shadow a
> valid library file "tramp.elc" that won't be found as a = result.

I think I'm beginning to see what you mean. =C2=A0So far we have = simply
considered "if it hurts, don't do it". =C2=A0And it worked we= ll enough.

> When you say those names aren't spurious, do you have a particular=
> example of an emacs elisp library in mind which file name ends with > a suffix other than .el .elc .el.gz .elc.gz?

There are a few (~/.emacs being the most obvious), but admittedly, I think they all share the property of not being searched for in
load-path. =C2=A0So we could probably strengthen the search along the lines=
you suggest without (hopefully) breaking existing code with a hack along the lines of the one below.


=C2=A0 =C2=A0 =C2=A0 =C2=A0 Stefan


=3D=3D=3D modified file 'lisp/subr.el'
--- lisp/subr.el =C2=A0 =C2=A0 =C2=A0 =C2=A02014-04-15 17:03:15 +0000
+++ lisp/subr.el =C2=A0 =C2=A0 =C2=A0 =C2=A02014-05-12 02:15:04 +0000
@@ -1878,10 +1878,15 @@
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 load-path (get-load-suffixes)))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0nil nil
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0t))
- =C2=A0(let ((file (locate-file library
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0(or path load-path)
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0(append (unless nosuffix (get-load-suffixes))
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0load-file-rep-suffixes))))
+ =C2=A0(let* ((suffixes
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(nconc (unless nosuffix (get-load-suffi= xes))
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (when (or (file-n= ame-absolute-p library)
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 ;; (load "foo.el") should find /bar/foo.el.gz,<= br> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 ;; but (load "foo") should not find /bar/foo.gz= .
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 (string-match "\\.el\\(\\.[[:alnum:]]+\\)?"
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 library)= )
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 load-file-= rep-suffixes)))
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 (file (locate-file library (or path load-path= ) suffixes)))
=C2=A0 =C2=A0 =C2=A0(if interactive= -call
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (if file
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (message "Library is file %s= " (abbreviate-file-name file))


--001a1134bdda74595a04f92c7ec7--