[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: relative load-file

From: Rocky Bernstein
Subject: Re: relative load-file
Date: Wed, 11 Nov 2009 21:09:58 -0500

On Wed, Nov 11, 2009 at 8:20 PM, Stefan Monnier <address@hidden> wrote:
> When load-file-name is nil,  this uses the name of default directory of
> current buffer. But that's not the same as the directory of the file
> containing the load-relative function.

> For example, I could have eval'd a buffer that did a load-relative of a file
> in a different directory. Even without this, I can change the default
> directory using the cd function. And changing the default directory never
> changes the file location of the file issuing load-relative.

> Any other thoughts?

You obviously know enough about the problem to "fix it" further

Huh? If I knew a good solution to this short of changing the source code, I wouldn't be asking.

(e.g. using buffer-file-name if you prefer it to default-directory).

What strikes me wrong about going in the direction of using buffer-file-name or using buffers is that that we are introspecting about is the running code.

I just took a look at the src/lread.c and although it is a somewhat bit mysterious to me, from what I gather from readevalloop (and I could be very very wrong here) is that when a file is read in, perhaps there is no buffer created in the Emacs sense.

Avoiding buffer creation to read in a Lisp file make sense because one wants reading Lisp code to be fast; furthemore there is no reason to store the entire source contents as source contents after the file is read/eval'd. (The vast majority of compilers don't save the source text).

I don't see any point in fixing it further, since there will always be
corner cases where it doesn't do what the user intended.

A couple of things strike me as weird.

First, none of the examples I have given do I find really  corner case.  These and many more have come up. (Recall that I have been using this mode of working, and I gather from prior remarks you haven't.)

Second, a reason one might try to encapsulate this in a library is to be able to handle as many of the corner cases as possible so run-of-the-mill users need not have to be concerned - they can use the feature and have confidence that it does the right thing.

Thanks for the help.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]