unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Alex Kosorukoff <alex@3form.com>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: 17467 <17467@debbugs.gnu.org>
Subject: bug#17467: 24.3; locate-library returning spurious path
Date: Sun, 11 May 2014 21:36:22 -0700	[thread overview]
Message-ID: <CAHD9_tRCCswTqNUGr8F2OB1w3OUkSJanDfDiN=1xTee4exhP7w@mail.gmail.com> (raw)
In-Reply-To: <jwv4n0v4ut9.fsf-monnier+emacsbugs@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 6157 bytes --]

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



On Sun, May 11, 2014 at 7:18 PM, Stefan Monnier <monnier@iro.umontreal.ca>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))
>
>

[-- Attachment #2: Type: text/html, Size: 7997 bytes --]

  reply	other threads:[~2014-05-12  4:36 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-11 16:06 bug#17467: 24.3; locate-library returning spurious path Alex Kosorukoff
2014-05-11 17:03 ` Eli Zaretskii
2014-05-11 17:38   ` Alex Kosorukoff
2014-05-11 17:46     ` Eli Zaretskii
2014-05-11 17:53       ` Alex Kosorukoff
2014-05-11 18:10         ` Eli Zaretskii
2014-05-11 18:55           ` Alex Kosorukoff
2014-05-11 22:55             ` Stefan Monnier
2014-05-12  0:41               ` Alex Kosorukoff
2014-05-11 17:37 ` Glenn Morris
2014-05-11 17:43   ` Alex Kosorukoff
2014-05-11 19:50 ` Stefan Monnier
2014-05-11 20:45   ` Alex Kosorukoff
2014-05-11 21:00     ` Alex Kosorukoff
2014-05-11 21:19     ` Glenn Morris
2014-05-11 22:31       ` Alex Kosorukoff
2014-05-11 21:56     ` Stefan Monnier
2014-05-12  0:20       ` Alex Kosorukoff
2014-05-12  0:32         ` Glenn Morris
2014-05-12  1:35           ` Alex Kosorukoff
2014-05-12  2:02             ` Alex Kosorukoff
2014-05-12  2:18         ` Stefan Monnier
2014-05-12  4:36           ` Alex Kosorukoff [this message]
2014-05-12  6:39             ` Stefan Monnier
2014-05-12 17:46               ` Alex Kosorukoff
2020-08-25 10:39           ` Lars Ingebrigtsen
2020-08-25 14:22             ` Stefan Monnier
2020-08-25 14:25               ` Lars Ingebrigtsen
2020-10-13  1:41             ` Lars Ingebrigtsen
2014-05-15 19:39 ` Stefan Monnier
2014-05-15 23:57   ` Alex Kosorukoff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAHD9_tRCCswTqNUGr8F2OB1w3OUkSJanDfDiN=1xTee4exhP7w@mail.gmail.com' \
    --to=alex@3form.com \
    --cc=17467@debbugs.gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).