From: "Stefan Monnier" <monnier+gnu/emacs@RUM.cs.yale.edu>
Cc: "Stefan Monnier" <monnier+gnu/emacs@rum.cs.yale.edu>,
emacs-devel@gnu.org
Subject: Re: locate-file in Emacs
Date: Thu, 18 Apr 2002 14:59:14 -0400 [thread overview]
Message-ID: <200204181859.g3IIxEY04890@rum.cs.yale.edu> (raw)
In-Reply-To: sxsofgh9dwy.fsf@florida.arsdigita.de
> I don't agree with that. At least, I wouldn't obsolete them for
> XEmacs. I think they're quite useful, and much faster than the
> generic PREDICATE.
The useful part is not relevant: `executable' is not much better
than `file-executable-p' for people writing code.
Now the performance issue is something new that I haven't
thought about too much. The only case where it matters seems to be
when predicate is `file-executable-p' (since it seems to be the
only MODE in use that I can see, apart from the default).
How significant is it ? I truly do not know.
> > I have no doubt that it's been used, so do you happen to know if it
> > has been used in packages that are in active use ?
> I have no statistics about that.
Anectodes, maybe ?
When I said active use, I meant a package that can be downloaded from the
web as opposed to someone's .emacs file. Whether it's used by a million
people or just by 5 doesn't matter too much at this stage.
> > Based on the information here, I think I'll go ahead and implement
> > the functionality on top of `openp' with just a `predicate' argument
> > and without backward compatibility for `mode'.
>
> Please name your function differently to avoid confusion. I am
> beginning to regret bringing this up.
No, it would be silly not to have compatible interfaces.
[ Note that my current implementation accepts `1' as predicate to
mean file-executable-p (more or less, since it uses the `access'
syscall, so it's actually as fast as the previous code and more
importantly behaves the same). ]
> > But I have one question left: should the `file-directory-p' check be enforced
> > independently from `predicate' ?
>
> Yes, please. For several days I ran my `locate-file' in place of
> XEmacs's original (to shake out the bugs), and I noticed that
> `sh-script' wouldn't load. That is because my locate-file found
> contains "packages/sh-script" (a directory) before
> "packages/sh-script/lisp/sh-script[.elc]" (a file).
I didn't mean to change the existing behavior, but I meant "when a predicate
is passed what should happen" ? In any case, it seems there is some
common agreement that directories should be ignored not matter what
the predicate says.
> > I.e. can (locate-file f p s 'file-readable-p) return a directory ?
> >
> > "Yes" is better since it allows the caller to choose whether
> > directories are considered or not but "no" is better because it
> > allows (locate-file file path suffixes 'file-executable-p) to behave
> > like your current (locate-file file path suffixes 'executable). Or
> > does the current XEmacs code always consider directories anyway ?
>
> I think it is ok for a function named `locate-file' to ignore
> directories.
That's true, but I was just thinking of the case where someone
needs to look through a path for a particular subdirectory.
Like look for the X11 subdirectory in
/usr/include:/usr/X11R6/include:/usr/local/include:/usr/share/include:...
It would be convenient to be able to use locate-file for it as well
just by passing an appropriate predicate.
Stefan
next prev parent reply other threads:[~2002-04-18 18:59 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-04-17 5:05 locate-file in Emacs Hrvoje Niksic
2002-04-17 5:47 ` Eli Zaretskii
2002-04-17 8:53 ` Hrvoje Niksic
2002-04-17 9:28 ` Stefan Monnier
2002-04-17 9:47 ` Hrvoje Niksic
2002-04-17 10:01 ` Stefan Monnier
2002-04-18 13:16 ` Hrvoje Niksic
2002-04-18 13:54 ` Miles Bader
2002-04-18 14:09 ` Hrvoje Niksic
2002-04-18 14:25 ` Miles Bader
2002-04-18 14:08 ` Stefan Monnier
2002-04-18 15:11 ` Hrvoje Niksic
2002-04-18 15:27 ` Stefan Monnier
2002-04-18 16:20 ` Hrvoje Niksic
2002-04-18 18:59 ` Stefan Monnier [this message]
2002-04-25 12:12 ` Hrvoje Niksic
2002-04-25 22:52 ` Stefan Monnier
2002-05-06 15:58 ` Hrvoje Niksic
[not found] ` <200205061655.g46Gt3K01382@rum.cs.yale.edu>
2002-05-06 19:53 ` Hrvoje Niksic
[not found] ` <200205062052.g46KqwO02482@rum.cs.yale.edu>
2002-05-06 20:59 ` Hrvoje Niksic
2002-05-06 21:12 ` Stefan Monnier
2002-05-06 21:57 ` Hrvoje Niksic
2002-05-07 20:06 ` Richard Stallman
2002-04-18 16:39 ` Eli Zaretskii
2002-04-18 16:24 ` Hrvoje Niksic
2002-04-19 5:25 ` Richard Stallman
2002-04-18 15:31 ` Miles Bader
2002-04-18 16:29 ` Hrvoje Niksic
2002-04-18 16:45 ` Miles Bader
2002-04-18 16:49 ` Hrvoje Niksic
2002-04-18 16:54 ` Miles Bader
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=200204181859.g3IIxEY04890@rum.cs.yale.edu \
--to=monnier+gnu/emacs@rum.cs.yale.edu \
--cc=emacs-devel@gnu.org \
/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).