* How to get the directory of a package?
@ 2021-02-03 4:50 Marcin Borkowski
2021-02-03 4:55 ` Marcin Borkowski
0 siblings, 1 reply; 4+ messages in thread
From: Marcin Borkowski @ 2021-02-03 4:50 UTC (permalink / raw)
To: Help Gnu Emacs mailing list
Hello,
assume that I'm writing a package which wants to use a file from the
same directory the .el (or .elc) file of the package is located in. How
can the package know where in the filesystem it is located?
Bonus points for a method which works not only with `require', but also
with `load-file' and `eval-buffer' (in the last case,
`default-directory' will probably work, but I skimmed through all
variables and functions matching `directory$' and nothing seemed to be
what I'm looking for).
TIA,
--
Marcin Borkowski
http://mbork.pl
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: How to get the directory of a package?
2021-02-03 4:50 How to get the directory of a package? Marcin Borkowski
@ 2021-02-03 4:55 ` Marcin Borkowski
2021-02-03 5:02 ` Stefan Monnier
2021-02-03 5:14 ` Eric Abrahamsen
0 siblings, 2 replies; 4+ messages in thread
From: Marcin Borkowski @ 2021-02-03 4:55 UTC (permalink / raw)
To: Help Gnu Emacs mailing list
OK,
> assume that I'm writing a package which wants to use a file from the
> same directory the .el (or .elc) file of the package is located in. How
> can the package know where in the filesystem it is located?
>
> Bonus points for a method which works not only with `require', but also
> with `load-file' and `eval-buffer' (in the last case,
> `default-directory' will probably work, but I skimmed through all
> variables and functions matching `directory$' and nothing seemed to be
> what I'm looking for).
so I think I've found the answer. Is this correct? Are there possibly
some edge cases I didn't think about?
--8<---------------cut here---------------start------------->8---
(if load-file-name
(file-name-directory load-file-name)
default-directory)
--8<---------------cut here---------------end--------------->8---
TIA,
--
Marcin Borkowski
http://mbork.pl
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: How to get the directory of a package?
2021-02-03 4:55 ` Marcin Borkowski
@ 2021-02-03 5:02 ` Stefan Monnier
2021-02-03 5:14 ` Eric Abrahamsen
1 sibling, 0 replies; 4+ messages in thread
From: Stefan Monnier @ 2021-02-03 5:02 UTC (permalink / raw)
To: help-gnu-emacs
> (if load-file-name
> (file-name-directory load-file-name)
> default-directory)
That looks right to me,
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: How to get the directory of a package?
2021-02-03 4:55 ` Marcin Borkowski
2021-02-03 5:02 ` Stefan Monnier
@ 2021-02-03 5:14 ` Eric Abrahamsen
1 sibling, 0 replies; 4+ messages in thread
From: Eric Abrahamsen @ 2021-02-03 5:14 UTC (permalink / raw)
To: Marcin Borkowski; +Cc: Help Gnu Emacs mailing list
Marcin Borkowski <mbork@mbork.pl> writes:
> OK,
>
>> assume that I'm writing a package which wants to use a file from the
>> same directory the .el (or .elc) file of the package is located in. How
>> can the package know where in the filesystem it is located?
>>
>> Bonus points for a method which works not only with `require', but also
>> with `load-file' and `eval-buffer' (in the last case,
>> `default-directory' will probably work, but I skimmed through all
>> variables and functions matching `directory$' and nothing seemed to be
>> what I'm looking for).
>
> so I think I've found the answer. Is this correct? Are there possibly
> some edge cases I didn't think about?
>
> (if load-file-name
> (file-name-directory load-file-name)
> default-directory)
I stole the following bit of code to find "this file" from 'ert-x, it
was a bit of cargo-culting as I'm not entirely sure when/how the various
conditions would be true:
(or (bound-and-true-p byte-compile-current-file)
(and load-in-progress load-file-name)
buffer-file-name)
Might be helpful?
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-02-03 5:14 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-02-03 4:50 How to get the directory of a package? Marcin Borkowski
2021-02-03 4:55 ` Marcin Borkowski
2021-02-03 5:02 ` Stefan Monnier
2021-02-03 5:14 ` Eric Abrahamsen
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).